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