gpt4 book ai didi

R将多行折叠为1行-同一列

转载 作者:行者123 更新时间:2023-12-04 10:17:30 24 4
gpt4 key购买 nike

这是我昨晚回答的一个问题,因为我正在重新考虑如何格式化数据。我进行了搜索,但找不到任何适用的答案;我搜索的字词可能有误。

我有一个数据表,其中有很多行要合并:

record_numb <- c(1,1,1,2,2,2)
col_a <- c(123,'','',987,'','')
col_b <- c('','234','','','765','')
col_c <- c('','','543','','','543')
df <- data.frame(record_numb,col_a,col_b,col_c)
library(data.table)
setDT(df)

record_numb col_a col_b col_c
1 123
1 234
1 345
2 987
2 765
2 543

每行将始终填充col_a,col_b或col_c。在这3个人口中,它将永远不会有超过1个。我想将这些数据透视表(?)放入每行单行,因此它看起来像这样:
record_numb     col_a   col_b   col_c
1 123 234 345
2 987 765 543

我玩过融合/转换,但是我是R的新手,我有一半的问题是知道可以使用什么。有太多需要使用的功能,我希望你们中的一个可以将我指向一个包装或功能,而您的头顶上却没有。我进行的搜索指出我可以融化并转换,但我无法将其应用于这种情况。我愿意使用任何功能或程序包。

最佳答案

正如您所建议的那样,您希望在注释中使用data.table解决方案,您可以使用

library(data.table)
df <- data.table(record_numb,col_a,col_b,col_c)

df[, lapply(.SD, paste0, collapse=""), by=record_numb]
record_numb col_a col_b col_c
1: 1 123 234 543
2: 2 987 765 543
.SD基本上说:“通过我的data.table获取所有变量”,除了by参数中的那些变量。在@Frank的答案中,他使用 .SDcols减少了变量集。如果要将变量转换为数字,则仍然可以在一行中执行此操作。这是一种链接方法。
df[, lapply(.SD, paste0, collapse=""), by=record_numb][, lapply(.SD, as.integer)]

第二个“链”将所有变量转换为整数。

关于R将多行折叠为1行-同一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068734/

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