从数据框中拉出唯一值,并使用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')
d1df
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