gpt4 book ai didi

r - 折叠数据框

转载 作者:行者123 更新时间:2023-12-01 13:52:20 24 4
gpt4 key购买 nike

我如何折叠我的数据框,其中许多观察结果有多行,但几个不同变量中的每一个最多只有一个值?

这是我所拥有的:

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 != '']

使用data.table

library(data.table)
setDT(df)[, lapply(.SD, Myfunc), by = list(id, title, info)]
# 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

或者类似地使用 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

关于r - 折叠数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30780465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com