我想从数据框中的列中提取唯一数字。我从不同的列中提取了数字,然后进入了数据框中的不同列。 示例代码:
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
答案 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