从数据框中的列中提取唯一数字

时间:2020-05-05 05:32:28

标签: r

我想从数据框中的列中提取唯一数字。我从不同的列中提取了数字,然后进入了数据框中的不同列。 示例代码:

library(dplyr)
df <- as.data.frame(rbind(c("12,15,19,15,12,16,41"),c("1,2,3,4,5,4,3,2,1")))
df1 <- unique(df)

预期输出为:

12,15,19,16,41  
1,2,3,4,5

3 个答案:

答案 0 :(得分:3)

您可以在数据框中创建一个列表列,不确定这是否是您想要的:

list_col <- lapply(
  strsplit(as.character(df$V1), ","), 
  function(x) as.numeric(unique(x))
)

df1 <- data.frame(I(list_col))
df1
#       list_col
# 1 12, 15, ....
# 2 1, 2, 3,....

df1$list_col
# [[1]]
# [1] 12 15 19 16 41
#
# [[2]]
# [1] 1 2 3 4 5

答案 1 :(得分:0)

我们可以用逗号(,)分割字符串,并从每个字符串中仅提取unique值。

df$new_col <- sapply(strsplit(df$V1, ","), function(x) toString(unique(x)))
df

#                    V1            new_col
#1 12,15,19,15,12,16,41 12, 15, 19, 16, 41
#2    1,2,3,4,5,4,3,2,1      1, 2, 3, 4, 5

答案 2 :(得分:0)

df <- as.data.frame(rbind(c("12,15,19,15,12,16,41"),c("1,2,3,4,5,4,3,2,1")))

x <- apply(df, 1, function(x) eval(parse(text=paste0("c(", x, ")"))) )
sapply(x, function(x) as.numeric(unique(x)))

返回

      [,1] [,2]
[1,]   12    1
[2,]   15    2
[3,]   19    3
[4,]   16    4
[5,]   41    5