R语言 使用来自不同数据框的唯一值的计数创建数据框

f3temu5u  于 2023-09-27  发布在  其他
关注(0)|答案(2)|浏览(84)

我有一个dataframe,它包含多个值在0和1之间的列。例如

> DF
  column1 column2 column3 column4
1       0       0     0.5       1
2     0.5     0.5     0.5       1
3       1       1     0.3     0.3
4       1       1       1       1
5       0       0     0.3     0.3
6       0    0.75       0     0.3
7       0       0       0       0
8     0.4     0.4     0.4     0.4

对于每一行,我想计算唯一值出现的次数,并以这样的dataframe结束:

> DF_count
  column_unique column1 column2 column3 column4
1             0       4       3       2       1
2           0.3       0       0       2       3
3           0.4       1       1       1       1
4           0.5       1       1       2       0
5          0.75       0       1       0       0
6             1       2       2       0       3

感谢所有的帮助。谢谢:-)
我尝试了摘要功能,但无法使其工作

c90pui9n

c90pui9n1#

library(tidyverse)
DF %>%
  pivot_longer(everything()) %>%
  count(value, name) %>%
  pivot_wider(names_from = name, values_from = n, values_fill = 0)

# A tibble: 6 × 5
  value column1 column2 column3 column4
  <dbl>   <int>   <int>   <int>   <int>
1  0          4       3       2       1
2  0.3        0       0       2       3
3  0.4        1       1       1       1
4  0.5        1       1       2       0
5  0.75       0       1       0       0
6  1          2       2       1       3
6ojccjat

6ojccjat2#

如果你想玩一点for循环,试试这个:

unicos <- unique(unlist(DF))
DF_count <- 0*DF[1:length(unicos),]

for(i in 1:ncol(DF_count)){
  for(j in 1:length(unicos)){
    DF_count[j,i] <- sum(DF[,i]  %in% unicos[j])
  }
}

DF_count <- data.frame(column_unique =  unicos, DF_count)
DF_count <- DF_count[order(DF_count$column_unique), ]
DF_count

  column_unique column1 column2 column3 column4
1          0.00       4       3       2       1
6          0.30       0       0       2       3
4          0.40       1       1       1       1
2          0.50       1       1       2       0
5          0.75       0       1       0       0
3          1.00       2       2       1       3

相关问题