Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.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在列上生成_R_Data Manipulation - Fatal编程技术网

从数据框中拉出唯一值,并使用r在列上生成

从数据框中拉出唯一值,并使用r在列上生成,r,data-manipulation,R,Data Manipulation,如何从数据框中的每一列(数字和字符串)中提取唯一的值,并使其成为一列 a = c("a", "b", "c", "d", "a") b = c(1, 2, 3, 4, 3) df <- cbind(a, b) 上面的示例数据很简单,但目的是能够使用多个数据框的答案,其中包含不同的列名和数据。谢谢。我们将其放在列表中,获取唯一的元素,用字母设置名称,然后将堆栈设置为data.frame d1 <- stack(setNames(lapply(list(a, b), unique),

如何从数据框中的每一列(数字和字符串)中提取唯一的值,并使其成为一列

a = c("a", "b", "c", "d", "a")
b = c(1, 2, 3, 4, 3)
df <- cbind(a, b)

上面的示例数据很简单,但目的是能够使用多个数据框的答案,其中包含不同的列名和数据。谢谢。

我们将其放在
列表中
,获取
唯一的
元素,用
字母设置名称
,然后将
堆栈
设置为data.frame

d1 <- stack(setNames(lapply(list(a, b), unique), letters[1:2]))[2:1]
colnames(d1) <- c('variable', 'Level')

d1
df
data.frame创建:

a = c("a", "b", "c", "d", "a")
b = c(1, 2, 3, 4, 3)
df <- cbind(a, b)
a=c(“a”、“b”、“c”、“d”、“a”)
b=c(1,2,3,4,3)
df快速+可扩展
Tidyr的
collect
和dplyr的
distinct
为您提供了快速获取该结构的方法。(我将包调用留在函数中,这样您就可以记住哪个包来自哪个包,而我总是忘记这些。)


@灾难性故障谢谢,修复了文本部分。Hi@Terru________________________________。不过,我该如何衡量这一点呢。这完全适用于示例数据,但实际的数据帧中会有不同的列名。我很抱歉,正如我应该在上面所说的那样。问题的“通用”应用程序中更改的代码处理多个具有未知列名的列应该
df
是类似于
data.frame(a,b)
?如果是这样,请参见下面我的答案,它可以是使用
tidyverse
的一行代码。这非常完美。工作得很有魅力!谢谢你@Jesse Tweedle
a = c("a", "b", "c", "d", "a")
b = c(1, 2, 3, 4, 3)
df <- cbind(a, b)
names<-colnames(df)
variable<-NULL
Level<-NULL
for(i in 1:length(names))
{
  variable<-c(variable,rep(names[i],length(unique(df[,i]))))
  Level<-c(Level,unique(df[,i]))
}
db<-cbind(variable,Level)
db
     variable Level
[1,] "a"      "a"  
[2,] "a"      "b"  
[3,] "a"      "c"  
[4,] "a"      "d"  
[5,] "b"      "1"  
[6,] "b"      "2"  
[7,] "b"      "3"  
[8,] "b"      "4" 
library(tidyverse)
a = c("a", "b", "c", "d", "a")
b = c(1, 2, 3, 4, 3)
data.frame(a,b) %>% tidyr::gather() %>% dplyr::distinct()

  key value
1   a     a
2   a     b
3   a     c
4   a     d
5   b     1
6   b     2
7   b     3
8   b     4