2014-11-12 4 views
0

Новый пользователь R. Не может думать, как задать вопрос. Я очистил веб-страницу для HTML-таблиц. Как правило, все прошло хорошо, за исключением одной таблицы. Вместо 7 отдельных таблиц все обрушилось на 1 таблицу, с именем столбца и значением для первой таблицы были два отдельных столбца, а все остальные таблицы были строками. Результаты таблица с чем-то вроде этого:Чистая таблица HTML с Reshape2

df <- data.frame(is_employed = c("Hobbies", "Has Previous Experience"), false = c("squash", "false")) 

Очевидно, что мне нужно иметь строки (и имя столбца) в первой колонке, как их собственные столбцы, с элементом во втором столбце, их значения , предпочтительно с символами подчеркивания в именах столбцов. Я пробовал:

df <- dcast(df, ~is_employed, value.var = "false") 

Но получено сообщение об ошибке. Тогда я думал, чтобы добавить еще один столбец, как таковой:

df2 <- data.frame(number = c(1, 2), is_employed = c("Hobbies", "Has Previous Experience"), false = c("squash", "false")) 

я попытался

df3 <- dcast(df2, number ~is_employed, value.var="false") 

, разместившие значения в первых столбцах, как их собственные колонны, но производится в два ряда (вместо 1) , с НС. Я уверен, что это действительно просто, но я не могу понять.

На редактирования: Я думаю, что это дает мне то, что я хочу, но я далеко от моего компьютера, поэтому я не могу подтвердить:

library("dplyr") 
library("tidyr") 

mat <- as.matrix(df) 
mat <- rbind(colnames(mat), mat) 
colnames(mat) <- c("variable", "value") 


df2 <- as.data.frame(mat) 

df3 <- df2 %>% 
    mutate(n = 1) %>% 
    spread(variable, value) %>% 
    select(-n) 

Мне нужно добавить n или я получаю Nas, но Мне это не нравится.

+0

Я только что понял, что добавлена ​​вторая строка, потому что у меня было два ряда чисел. Если у меня есть только одна строка для «числа» (например, df2 <- data.frame (number = c (1), is_employed = c («Хобби», «Предыдущий опыт»), false = c («squash», «false»)), я получаю функцию dcast для работы, но не очень элегантно добавить фиктивный столбец. Есть ли лучший способ? – JoeF

ответ

1

Это то, что вам нужно?

mat <- as.matrix(df) 
mat <- rbind(colnames(mat), mat) 
colnames(mat) <- c("variable", "value") 
mat 
#  variable     value 
# [1,] "is_employed"    "false" 
# [2,] "Hobbies"     "squash" 
# [3,] "Has Previous Experience" "false" 

as.data.frame(mat) 
#     variable value 
# 1    is_employed false 
# 2     Hobbies squash 
# 3 Has Previous Experience false 
+0

Спасибо за ответ. Не совсем. Я не хочу, чтобы имена столбцов были «variable», «value», «Мне нужно, чтобы имена столбцов были« is_employed »,« Хобби »,« Предыдущий опыт ». Я не могу понять этот шаг (просто используя spread() из tidyr заполняет фрейм данных с помощью NAs). – JoeF

+0

@JoeF Можете ли вы обновить свой оригинальный вопрос, чтобы показать, как именно вы хотите, чтобы результат выглядел? – JasonAizkalns

+0

Я отмечу это как ответ, так как он доставит мне большую часть пути – JoeF