我想从数据框中的6列(第一列与(2-6)列)中仅提取(作为文件)唯一值。一列中没有任何其他列的唯一值。
A B C D E F
12 15 18 55 27 13
15 25 10 21 23 20
20 18 14 25 15 25
25 27 30 35 25 10
35 15
输出应类似于...
A B C D E F
12 NA 14 55 23 13
30 21
谢谢。
答案 0 :(得分:1)
请尝试以下操作:
data$A[!data$A %in% c(data$B, data$C, data$D, data$E, data$F)]
data$B[!data$B %in% c(data$A, data$C, data$D, data$E, data$F)]
data$C[!data$C %in% c(data$B, data$A, data$D, data$E, data$F)]
data$D[!data$D %in% c(data$B, data$C, data$A, data$E, data$F)]
data$E[!data$E %in% c(data$B, data$C, data$D, data$A, data$F)]
data$F[!data$F %in% c(data$B, data$C, data$D, data$E, data$A)]
答案 1 :(得分:1)
您可以将notification.loading().
包中的filter
与相交一起使用:
dplyr
答案 2 :(得分:0)
您说想要...
一列中没有其他任何值的唯一值 列。
可能的解决方案:
> lapply(setNames(1:6, names(df)), function(i) setdiff(df[,i], unlist(df[,-i])))
$A
[1] 12
$B
integer(0)
$C
[1] 14 30
$D
[1] 55 21
$E
[1] 23
$F
[1] 13
请注意,这与您的期望输出表不一致,但与您所说的期望(上面的引用)一致。
x <- lapply(setNames(1:6, names(df)), function(i) setdiff(df[,i], unlist(df[,-i])))
l <- sapply(x, length)
x[l==0] <- NA
sapply(x, "length<-", max(l, na.rm=T))
# A B C D E F
# [1,] 12 NA 14 55 23 13
# [2,] NA NA 30 21 NA NA
数据
df <- read.table(text="A B C D E F
12 15 18 55 27 13
15 25 10 21 23 20
20 18 14 25 15 25
25 27 30 35 25 10
NA NA 35 NA NA 15", header=TRUE)
# dput
df <- structure(list(A = c(12L, 15L, 20L, 25L, NA), B = c(15L, 25L,
18L, 27L, NA), C = c(18L, 10L, 14L, 30L, 35L), D = c(55L, 21L,
25L, 35L, NA), E = c(27L, 23L, 15L, 25L, NA), F = c(13L, 20L,
25L, 10L, 15L)), .Names = c("A", "B", "C", "D", "E", "F"), class = "data.frame", row.names = c(NA,
-5L))