提问人:stats_noob 提问时间:10/28/2021 最后编辑:Ronak Shahstats_noob 更新时间:10/28/2021 访问量:92
在 R 中折叠行:无法将类“公式”强制转换为 data.frame (R) [duplicate]
Collapsing Rows in R: cannot coerce class ‘"formula"’ to a data.frame (R) [duplicate]
问:
我在 R 中有以下数据:
name = c("person1", "person2", "person1", "person2")
iter = c(1,1,2,2)
col1 = c(12, 33, 55, 8)
col2 = c(4, 7, 88,2)
col3 = c(11,1,6, 7)
col4 = c(55, 2 , 4 ,5)
orig_data = data.frame(name, iter, col1, col2, col3, col4)
此数据如下所示:
name iter col1 col2 col3 col4
1 person1 1 12 4 11 55
2 person2 1 33 7 1 2
3 person1 2 55 88 6 4
4 person2 2 8 2 7 5
我试图使最终结果看起来像这样:
name iter col1_iter1 col1_iter2 col2_iter1 col2_iter2 col3_iter1 col3_iter2 col4_iter1 col4_iter2
1 person1 1 12 55 4 88 11 6 55 4
2 person2 2 33 8 7 2 1 7 2 5
我做了一些研究,发现R中的“data.table”库可能能够解决这个问题。我在 R 中尝试了以下代码:
library(data.table)
dcast_data = data.frame(setDT(orig_data), iter ~ name, value.var = c('col1', 'col2', 'col3', 'col4'))
但这会产生以下错误:
Error in as.data.frame.default(x[[i]], optional = TRUE) :
cannot coerce class ‘"formula"’ to a data.frame
有人可以告诉我我做错了什么吗?
答:
2赞
Ronak Shah
10/28/2021
#1
由于您想以宽格式获取数据,我认为您正在寻找函数而不是 .此外,应更改使用的公式。dcast
data.frame
library(data.table)
dcast(setDT(orig_data), name~iter, value.var = c('col1', 'col2', 'col3', 'col4'))
# name col1_1 col1_2 col2_1 col2_2 col3_1 col3_2 col4_1 col4_2
#1: person1 12 55 4 88 11 6 55 4
#2: person2 33 8 7 2 1 7 2 5
下一个:操作数据表中的列(替换、排序)
评论