R 折叠数据帧
如果许多观测值都有多行,但每个变量最多只有一个值,那么如何折叠数据框 以下是我所拥有的:R 折叠数据帧,r,dataframe,R,Dataframe,如果许多观测值都有多行,但每个变量最多只有一个值,那么如何折叠数据框 以下是我所拥有的: id title info var1 var2 var3 1 foo Some string here string 1 1 foo Some string here string 2 1 foo Some string here s
id title info var1 var2 var3
1 foo Some string here string 1
1 foo Some string here string 2
1 foo Some string here string 3
2 bar A different string string 4 string 5
2 bar A different string string 6
3 baz Something else string 7 string 8
以下是我想要的:
id title info var1 var2 var3
1 foo Some string here string 1 string 2 string 3
2 bar A different string string 4 string 5 string 6
3 baz Something else string 7 string 8
我想我已经明白了
ddply(merged, .(id, title, info), summarize, var1 = max(var1), var2 = max(var2), var3 = max(var3))
但问题是有更多的var1-var3变量,它们是通过编程生成的。因此,我需要一种方法,根据变量名列表以编程方式插入
var1=max(var1)
,等等
定义一些辅助函数
Myfunc <- function(x) x[x != '']
或者与dplyr类似
library(dplyr)
df %>%
group_by(id, title, info) %>%
summarise_each(funs(Myfunc))
# Source: local data table [3 x 6]
# Groups: id, title
#
# id title info var1 var2 var3
# 1 1 foo Some string here string 1 string 2 string 3
# 2 2 bar A different string string 4 string 5 string 6
# 3 3 baz Something else string 7 NA string 8
你能解释一下helper函数应该做什么吗?删除某个列中的所有空vValue哦!我误解了你的“somehelper函数”注释,意思是我需要以某种方式调整函数。当你感兴趣的变量是数字时,你知道怎么做吗?使用MyFunc
返回错误tinyformat:格式中的转换说明符太多string@Alessandro数字列不能有空值。它只能有NA
s。您可以将函数修改为Myfunc
library(dplyr)
df %>%
group_by(id, title, info) %>%
summarise_each(funs(Myfunc))
# Source: local data table [3 x 6]
# Groups: id, title
#
# id title info var1 var2 var3
# 1 1 foo Some string here string 1 string 2 string 3
# 2 2 bar A different string string 4 string 5 string 6
# 3 3 baz Something else string 7 NA string 8