डेटा (प्रतिलिपि प्रस्तुत करने योग्य उदाहरण के लिए)

df1 <- data.frame(cluster = c(1,2,3,1,1,2),variable = c('a','b','c','d','e','f'))

df1
        cluster  variable
1       1        a
2       2        b
3       3        c
4       1        d
5       1        e
6       2        f

df2 <- data.frame(variable = c('a','b','c','d','e','f'),ss4.U1 = c(0,0,0,0,5,6),ss4.U2 = c(1,1,1,0,5,0),gg3.U2 = c(5,0,0,0,0,0))
row.names(df2) <- df2$variable
df2 <- df2[ ,-1]

df2
  4ss4.U1 5ss4.U2 6gg3.U2
a      0      1      5
b      0      1      0
c      0      1      0
d      0      0      0
e      5      5      0
f      6      0      0

df1 में उनके संबंधित समूहों के साथ चर शामिल हैं। df2 में नमूने (उपनाम) होते हैं जिनमें चरों की प्रचुरता (राउननाम) होती है। मुझे एक df चाहिए जो नमूनों में समूहों (जिसमें चर होते हैं) की प्रचुरता प्रदर्शित करता है।

परिणाम इस तरह दिखना चाहिए

samples 1 2 3
4ss4.U1  5 6 0
5ss4.U2  6 1 1
6gg3.U2  5 0 0

मुझे लगता है कि अंत में, नमूनों में समूहों की संख्या प्राप्त करने के लिए, मैं xtabs फ़ंक्शन का उपयोग कर सकता हूं। लेकिन मुझे नहीं पता कि इस मुकाम तक कैसे पहुंचा जाए।

0
JORIS 10 सितंबर 2020, 12:30

1 उत्तर

सबसे बढ़िया उत्तर

ये कोशिश करें:

library(tidyverse)
df2 %>% 
    rownames_to_column() %>% 
    right_join(df1, by = c("rowname" = "variable")) %>% 
    pivot_longer(cols = c(everything(), -rowname, -cluster), names_to = "sample") %>%
    group_by(cluster, sample) %>% 
    summarise(value = sum(value)) %>% 
    pivot_wider(names_from = cluster, values_from = value)
`summarise()` regrouping output by 'cluster' (override with `.groups` argument)
# A tibble: 3 x 4
  sample   `1`   `2`   `3`
  <chr>  <dbl> <dbl> <dbl>
1 gg3.U2     5     0     0
2 ss4.U1     5     6     0
3 ss4.U2     6     1     1
0
iago 10 सितंबर 2020, 14:01