【发布时间】:2020-03-01 23:59:41
【问题描述】:
我在 R 中有一个带有重复 ID 的数据框,我想在同一行上对齐。
df <- data_frame(id = c("A1", "A2", "C2", "A2", "C2", "A2"),
date = c("2010-01-15", "2016-03-05", "2017-05-21", "2013-09-03", "2015-11-25", "2011-07-07"),
iT = c("z", "z", "v", "w", "z", "v"))
我想将同一行上的每个 ID 与 for 循环对齐,但一次只能子集一个变量(实际上我实际上有大约 10 个)。
datalist = list()
datalist1 = list()
unique_id <- unique(df$id)
for (i in unique_id) {
subdf <- subset(df$date, df$id == i)
datalist[[i]] <- subdf
subdf1 <- subset(df$iT, df$id == i)
datalist1[[i]] <- subdf1
}
df1 <- plyr::ldply(datalist, rbind)
df2 <- plyr::ldply(datalist1, rbind)
df3 <- merge.data.frame(df1,df2, by.x = ".id", by.y = ".id")
我有数千行这样的行,有 2 到 7 个重复 ID
这是我的愿望:
df3 <- data_frame(id = c("A1", "A2", "C2"),
date1 = c("2010-01-15", "2016-03-05", "2017-05-21"),
iT = c("z", "z", "v"),
date2 = c("NA", "2013-09-03","2015-11-25"),
iT.2 = c("NA", "w", "z"),
date3 = c("NA", "2011-07-07", "NA"),
iT.3 = c("NA", "v", "NA"))
【问题讨论】:
-
因为你想要每行一个 id?像宽格式 data.frame 一样?
标签: r loops duplicates rbind