You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中对多观测行求和:合并问卷正负态度百分比

解决R语言中问卷态度百分比行求和问题

假设你的数据集名为df,行顺序为:行1=完全同意、行2=有点同意、行3=有点不同意、行4=完全不同意。以下是两种简单实现方法,适合新手操作:

方法一:基础R操作(无需额外安装包)

这是最直接的方式,不需要安装任何扩展包:

# 1. 计算正向态度总和(完全同意+有点同意)
positive_sum <- colSums(df[1:2, ])
# 2. 计算负向态度总和(有点不同意+完全不同意)
negative_sum <- colSums(df[3:4, ])
# 3. 将结果组合成新的数据框
result_df <- data.frame(rbind(positive_sum, negative_sum))
# 4. 给结果行命名(可选,方便识别)
rownames(result_df) <- c("正向态度", "负向态度")

# 查看最终结果
print(result_df)

示例验证

用你给出的样例数据测试:

# 构造样例数据集
df <- data.frame(
  Albania = c(13.3, 56.3, 21.3, 8.9),
  Andorra = c(18.0, 45.3, 27.2, 9.4),
  Azerbaijan = c(14.9, 27.2, 28.0, 5.2)
)

# 执行上述代码后,输出结果与你期望的一致(注:样例中Azerbaijan正向求和应为42.1,推测是你输入时的笔误)

方法二:使用dplyr包(适合后续复杂数据处理)

如果你之后需要频繁处理数据,可以用dplyr包实现,先安装并加载包:

install.packages("dplyr")
library(dplyr)

result_df <- df %>%
  # 给每行标记态度类型
  mutate(态度组 = rep(c("正向态度", "正向态度", "负向态度", "负向态度"), ncol(df))) %>%
  # 转置后按态度组求和
  t() %>% as.data.frame() %>%
  group_by(V5) %>% summarise(across(V1:V4, sum)) %>%
  # 转置回原格式并整理
  t() %>% as.data.frame() %>%
  setNames(c("正向态度", "负向态度")) %>%
  slice(-1)

不过这个方法对新手稍复杂,推荐先用基础R方法完成需求。

关键注意事项

  • 务必保证数据集的行顺序严格对应问卷选项:行1=完全同意、行2=有点同意、行3=有点不同意、行4=完全不同意,否则求和结果会出错。
  • 如果你的数据集是用文字行名标记的(比如行名为"完全同意"),可以用df[c("完全同意", "有点同意"), ]来选取对应行求和。

内容的提问来源于stack exchange,提问作者ouroboro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:35:36