我有以下資料框:
df1
V1 V2
G18941 17
G20092 534
G19692 10
G19703 260
G16777 231
G20045 0
...
和
df2
V1 V2
G18941 0
G20092 179
G19692 3
G19703 174
G16777 147
G20045 111
...
我會有這個:
df3
V1 V2
1 G18941 17
2 G20092 713
3 G19692 13
4 G19703 434
5 G16777 378
6 G20045 111
我已經嘗試過我發現的這段代碼
df3 <- ddply(merge(df1, df2, all.x=TRUE),
.(V1,V2), summarise, V2=sum(as.numeric(V2)))
但它會創建一個與 df2 完全相同的 df3 ...
我還嘗試了Merge data frames and sum columns with the same name 中的這段代碼:
df3 <- rbindlist(list(df1, df2))[, lapply(.SD, sum), by = V2]
但我收到以下錯誤:
Error in gsum(V1) : sum is not meaningful for factors.
如果你知道怎么做,我很感興趣。謝謝。
uj5u.com熱心網友回復:
library(dplyr)
df1 %>% rbind(df2) %>%
group_by(V1) %>%
summarise(V2 = sum(V2)) %>%
arrange(V2)
輸出:
# A tibble: 6 x 2
V1 V2
<chr> <int>
1 G19692 13
2 G18941 17
3 G20045 111
4 G16777 378
5 G19703 434
6 G20092 713
uj5u.com熱心網友回復:
好的,下面的代碼效果很好:
library(dplyr)
df3 <- bind_rows(df1, df2) %>%
group_by(V1) %>%
summarise_all(., sum, na.rm = TRUE)
uj5u.com熱心網友回復:
With base R-rbind將兩個資料集 ( df1, df2) 合并為一個資料集,然后使用aggregatewith 公式表示法來總結sum按 'V1' 分組的 'V2'
aggregate(V2 ~ V1, rbind(df1, df2), sum)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480398.html
上一篇:在R中合并excel檔案
