将一列的每个唯一值与另一列R中的每个唯一值相加
我的数据帧示例:将一列的每个唯一值与另一列R中的每个唯一值相加,r,dataframe,unique,subset,subset-sum,R,Dataframe,Unique,Subset,Subset Sum,我的数据帧示例: df<- structure(list(Var1 = c("A-01", "A-01", "A-02", "A-01", "A-02", "A-03", "A-01", "A-02", "A-03", "A-04", "A-01", "A-02", "A-03", "A-04", "A-05", "A-01", "A-02", "A-03", "A-04", "A-05
df<- structure(list(Var1 = c("A-01", "A-01", "A-02", "A-01", "A-02",
"A-03", "A-01", "A-02", "A-03", "A-04", "A-01", "A-02", "A-03",
"A-04", "A-05", "A-01", "A-02", "A-03", "A-04", "A-05", "A-07",
"A-01", "A-02", "A-03", "A-04", "A-05", "A-07", "A-08", "A-01",
"A-02"), Var2 = c("A-02", "A-03", "A-03", "A-04", "A-04", "A-04",
"A-05", "A-05", "A-05", "A-05", "A-07", "A-07", "A-07", "A-07",
"A-07", "A-08", "A-08", "A-08", "A-08", "A-08", "A-08", "A-09",
"A-09", "A-09", "A-09", "A-09", "A-09", "A-09", "A-11", "A-11"
), value.data = c(1, -1, -1, 1, 1, -1, 1, 1, -1, 1, -1, -1, 1,
-1, -1, 1, NA, -1, 1, 1, -1, -1, -1, 1, -1, 0, 1, -1, 1, 1)), row.names = c(37L,
73L, 74L, 109L, 110L, 111L, 145L, 146L, 147L, 148L, 181L, 182L,
183L, 184L, 185L, 217L, 218L, 219L, 220L, 221L, 222L, 253L, 254L,
255L, 256L, 257L, 258L, 259L, 289L, 290L), class = "data.frame")
df如果将数据转换为长格式,则可以使用count
library(tidyverse)
df %>%
melt('value.data') %>%
count(value, value.data) %>%
complete(value, value.data, fill = list(n = 0)) %>%
mutate_if(is.numeric, as.integer)
# # A tibble: 36 x 3
# value value.data n
# <chr> <int> <int>
# 1 A-01 - 1 3
# 2 A-01 0 0
# 3 A-01 1 5
# 4 A-01 NA 0
# 5 A-02 - 1 3
# 6 A-02 0 0
# 7 A-02 1 4
# 8 A-02 NA 1
# 9 A-03 - 1 5
# 10 A-03 0 0
# # ... with 26 more rows
库(tidyverse)
df%>%
熔化('value.data')%>%
计数(值,值.数据)%>%
完成(值,值.数据,填充=列表(n=0))%>%
mutate_if(is.numeric,as.integer)
##tibble:36 x 3
#数据
#
#1A-01-13
#2A-01 0
#3 A-01 1 5
#4a-01na0
#5A-02-13
#6A-020
#7 A-02 1 4
#8 A-02 NA 1
#9 A-03-15
#10 A-03 0
# # ... 还有26行
一开始我没有注意到要重塑数据:(谢谢你,RyanD!现在正在处理你上次的编辑
library(tidyverse)
df %>%
melt('value.data') %>%
count(value, value.data) %>%
complete(value, value.data, fill = list(n = 0)) %>%
mutate_if(is.numeric, as.integer)
# # A tibble: 36 x 3
# value value.data n
# <chr> <int> <int>
# 1 A-01 - 1 3
# 2 A-01 0 0
# 3 A-01 1 5
# 4 A-01 NA 0
# 5 A-02 - 1 3
# 6 A-02 0 0
# 7 A-02 1 4
# 8 A-02 NA 1
# 9 A-03 - 1 5
# 10 A-03 0 0
# # ... with 26 more rows