簡體   English   中英

在R中按計數合並數據幀

[英]Merge data frame by count in R

我下面有兩個數據框。

set.seed(12345)

df1 <- data.frame(
  y1 = sample(rep(c(0:1),length.out = 50)),
  y2 = sample(rep(c(0:1),length.out = 50)),
  y3 = sample(rep(c(0:1),length.out = 50)),
  y4 = sample(rep(c(0:1),length.out = 50)),
  y5 = sample(rep(c(0:1),length.out = 50)),
  y6 = sample(rep(c(0:1),length.out = 50))
)

df2 <- data.frame(x = c("y1","y2","y1:y2","y2:y3:y4","y5","y6"))

我想合並這兩個數據幀,但是合並的結果將顯示每個要素的“ 1”計數。 我的另一個問題是,在第二個數據幀中,某些列具有多個用“:”分隔的元素。 這將使我很難自動執行此操作。 下面是我要實現的表

        x count
1       y1    25
2       y2    25
3    y1:y2    11
4 y2:y3:y4     8
5       y5    25
6       y6    25

我們可以使用colSums來獲取'df1'的列式和。 識別的“x”,其具有的元素:使用grep 然后,我們根據索引('i1') split 'x'列,在每個list元素中對'df1'列進行子集化,使用帶有& Reduce ,以便當同一行中的所有元素均為1時僅得到TRUE獲取sum ,並基於創建的“ v1”對象創建“計數”列。

v1 <- colSums(df1)
i1 <- grep(':', df2$x)
v1[i1] <- sapply(strsplit(as.character(df2$x[i1]), ':'), 
           function(x) sum(Reduce(`&`,df1[x])))
df2$count <- v1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM