Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在d中的每列中仅查找唯一值_R - Fatal编程技术网

R 在d中的每列中仅查找唯一值

R 在d中的每列中仅查找唯一值,r,R,我有下面的数据帧df1。(编辑为在数据框中具有不同数量的重复值。) 我想得到一个df2,它只具有来自每个列“x”、“y”和“z”的唯一值。 我试过: TIBLES不能有行名,因此它会在数据中创建一个新列。您可以删除第一列,然后在所有列上使用unique library(dplyr) df1$...1 <- NULL df1 %>% summarise(across(.fns = unique)) # x y z # <dbl> <dbl&

我有下面的数据帧df1。(编辑为在数据框中具有不同数量的重复值。)

我想得到一个df2,它只具有来自每个列“x”、“y”和“z”的唯一值。
我试过:


TIBLES不能有行名,因此它会在数据中创建一个新列。您可以删除第一列,然后在所有列上使用
unique

library(dplyr)
df1$...1 <- NULL
df1 %>% summarise(across(.fns = unique))

#     x     y     z
#  <dbl> <dbl> <dbl>
#1     5     2     6
#2    10     6     2
#3    20     8     1
#4    25    10     8
库(dplyr)
df1$…1%摘要(跨(.fns=unique))
#x y z
#    
#1     5     2     6
#2    10     6     2
#3    20     8     1
#4    25    10     8
或在R基中:

df2 <- data.frame(sapply(df1, unique))

df2可能值得一提的是,虽然这适用于给定的样本数据,但它依赖于每列中有相同数量的重复项。否则,它将尝试(并失败)创建具有不同列长度的df,您将需要使用不同的数据结构。当我在一列中有不同数量的重复值时,该值似乎会再次重复自身。有什么方法可以克服它吗?@kaix请参阅更新的答案,使其适用于不同数量的唯一值。如评论中所述,当每列具有不同数量的唯一值时,该怎么办?请举例说明你的期望。
      >df2
        x     y     z 
        5     2     6
       10     6     2
       20     10    1
       25           8
library(dplyr)
df1$...1 <- NULL
df1 %>% summarise(across(.fns = unique))

#     x     y     z
#  <dbl> <dbl> <dbl>
#1     5     2     6
#2    10     6     2
#3    20     8     1
#4    25    10     8
df2 <- data.frame(sapply(df1, unique))
tmp <- lapply(df1, unique)
data.frame(sapply(tmp, `[`, 1:max(lengths(tmp))))

#   x  y z
#1  5  2 6
#2 10  6 2
#3 20 10 1
#4 25 NA 8