R.的新用户根本想不出怎么问这个问题。我为HTML表格抓取了一个网页。一般来说,一切都很顺利,除了一张桌子。不存在7个单独的表,而是将所有内容折叠到一个表中,其中第一个表的列名和值为两个单独的列,所有其他表都是行。结果如下所示:
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")它将值作为自己的列放置在第一列中,但是产生了带有NAs的两行(而不是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,但我不喜欢它。
发布于 2015-04-16 20:14:43
这就是你想要的吗?
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 falsehttps://stackoverflow.com/questions/26883650
复制相似问题