【发布时间】:2021-12-18 13:32:07
【问题描述】:
我有如下示例数据:
df_list = list()
df_list[[1]] <- c("A", NA, "A", "Ab", "Ac", NA, NA, "AA")
df_list[[2]] <- c(NA, "A", NA, NA, "AA", NA)
df_list[[3]] <- c("AA", "Ac", "Ad", NA, NA, NA, "Af", NA)
df_list[[4]] <- c(NA, NA, "AA", "Ac", "Ad", "AA", NA)
df_list[[5]] <- c(NA, "Ae", NA, "Ad", "Af", NA, "AA", NA)
names(df_list)[1] <- "nr1"
names(df_list)[2] <- "nr2"
names(df_list)[3] <- "nr3"
names(df_list)[4] <- "nr4"
names(df_list)[5] <- "nr5"
df 看起来像这样(注意不同的长度):
# A tibble: 8 x 5
nr1 nr2 nr3 nr4 nr5
<chr> <chr> <chr> <chr> <chr>
1 A NA AA NA NA
2 NA A Ac NA Ae
3 A NA Ad AA NA
4 Ab NA NA Ac Ad
5 Ac AA NA Ad Af
6 NA NA NA AA NA
7 NA Af NA AA
8 AA NA NA
对于每个列表项,我只想保留唯一的字符串。
我一直在思考如何做到这一点,但我不知道该怎么做。
想要的输出(df 形式):
# A tibble: 8 x 5
nr1 nr2 nr3 nr4 nr5
<chr> <chr> <chr> <chr> <chr>
1 A A AA AA Ae
2 Ab AA Ac Ac Ad
3 Ac Ad Ad Af
4 AA Af AA
列表形式:
df_list = list()
df_list[[1]] <- c("A", "Ab", "Ac", "AA")
df_list[[2]] <- c("A","AA")
df_list[[3]] <- c("AA", "Ac", "Ad","Af")
df_list[[4]] <- c("AA", "Ac", "Ad")
df_list[[5]] <- c("Ae", "Ad", "Af", "AA")
names(df_list)[1] <- "nr1"
names(df_list)[2] <- "nr2"
names(df_list)[3] <- "nr3"
names(df_list)[4] <- "nr4"
names(df_list)[5] <- "nr5"
【问题讨论】:
-
也许是这个?
lapply(df_list,unique)?或者这个(没有 NA):lapply(df_list,function(x) unique(na.omit(x)))? -
谢谢!我在发帖后两分钟就想通了(我想我需要再来一杯咖啡)。但是没有
NA的版本真的很不错。非常感谢。 -
@rmf 请作为答案发布。
-
@Tom 这里有很多很好的答案。请选择一个适合你的。
-
@rmf 我实际上应用了您的答案,所以我在等待您是否将其作为答案发布。我还没有测试其他人,但会尽快。