R的新用户。甚至想不出怎么问这个问题。我为 HTML 表格抓取了一个网页。一般来说,一切都很顺利,除了一张桌子。不是有 7 个单独的表,而是将所有内容折叠到 1 个表中,第一个表的列名和值是两个单独的列,所有其他表都是行。结果是一个类似这样的表格:
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 行),带有 NA。我确定这真的很基本,但我无法弄清楚。
编辑时:我认为这给了我我想要的东西,但我远离我的电脑,所以我无法确认:
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
或获得 NA,但我不喜欢它。