[英]Summing multiple observation rows in R
我有一個數據集,其中包含 90 個變量的 4 個觀測值。 觀察結果是對“完全同意”到“完全不同意”類型問卷的回答,以百分比表示。 我想對所有變量的兩個正面觀察結果(完全且有點同意)和兩個負面觀察結果(完全且有點不同意)求和。 R有沒有辦法做到這一點?
我的數據集如下所示:
Albania Andorra Azerbaijan etc.
1 13.3 18.0 14.9 ...
2 56.3 45.3 27.2 ...
3 21.3 27.2 28.0 ...
4 8.9 9.4 5.2 ...
我想對第 1+2 行和第 3+4 行求和,使其看起來像這樣:
Albania Andorra Azerbaijan etc.
1 69.6 63.3 65.4 ...
2 30.2 36.6 33.2 ...
我真的是 R 的新手,所以我不知道如何使用 go。 我在這個網站和其他網站上找到的所有類似問題的答案要么有字符類型的觀察結果,有多個行用於相同的觀察結果(缺少數據),要么將所有行合並為 1 行。 我的問題不屬於這些類別,我只是想折疊一些觀察結果。
由於您只有四行,因此將前兩行加在一起和后兩行加在一起可能是最簡單的。 您可以使用rbind
將兩個結果行粘貼到所需的數據框中:
rbind(df[1,] + df[2, ], df[3,] + df[4,])
#> Albania Andorra Azerbaijan
#> 1 69.6 63.3 42.1
#> 3 30.2 36.6 33.2
從問題中獲取的數據
df <- structure(list(Albania = c(13.3, 56.3, 21.3, 8.9), Andorra = c(18,
45.3, 27.2, 9.4), Azerbaijan = c(14.9, 27.2, 28, 5.2)), class = "data.frame",
row.names = c("1", "2", "3", "4"))
另一種選擇是通過將每 2 行與rowsum
並使用gl
with k = 2
就像在下面的代碼中一樣:
rowsum(df, gl(n = nrow(df), k = 2, length = nrow(df)))
#> Albania Andorra Azerbaijan
#> 1 69.6 63.3 42.1
#> 2 30.2 36.6 33.2
創建於 2023-01-06,使用reprex v2.0.2
使用dplyr
library(dplyr)
df %>%
group_by(grp = gl(n(), 2, n())) %>%
summarise(across(everything(), sum))
-輸出
# A tibble: 2 × 4
grp Albania Andorra Azerbaijan
<fct> <dbl> <dbl> <dbl>
1 1 69.6 63.3 42.1
2 2 30.2 36.6 33.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.