gpt4 book ai didi

R对数据表的特殊 reshape

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

我有一个数据表,其中包含一个键 ID 和一个包含文本值的列。 key ID 不是唯一的(有些行共享相同的 ID;可能有 1 到 8 行具有相同的 ID)。我想要一个具有唯一键 ID 和 8 列的数据表。

例如,我有:

require(data.table)
set.seed(1)
out<-data.table(id=c(rep("id1",3),rep("id2",2),"id3"),value=paste("value",round(rnorm(6,0,100))))
out
# id value
# 1: id1 value 49
# 2: id1 value 74
# 3: id1 value 58
# 4: id2 value -31
# 5: id2 value 151
# 6: id3 value 39

期望的输出:

data.table(id=c("id1","id2","id3"),value1=c("value -63","value 160","value -82"),value2=c("value 18","value 33",NA),value3=c("value -84",NA,NA))
# id value1 value2 value3
#1: id1 value -63 value 18 value -84
#2: id2 value 160 value 33 NA
#3: id3 value -82 NA NA

最佳答案

您可以尝试:(setnames 部分由@David Arenburg 贡献)

 res <- setnames(dcast.data.table(out[, N:=1:.N,by=id], id~N, value.var="value"),
2:4, paste0("value", 1:3))
res
# id value1 value2 value3
# 1: id1 value -63 value 18 value -84
# 2: id2 value 160 value 33 NA
# 3: id3 value -82 NA NA

或者@David Arenburg 建议的紧凑版本

 dcast.data.table(out[, N := paste0('value', 1:.N), by = id],
id ~ N, value.var = "value")

关于R对数据表的特殊 reshape ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26506009/

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