如何使用mutate()函数创建多列求和的新列?(R语言新手求助)
解决方法:用mutate生成每行宾客总数列
你遇到的错误是因为误用了sum()函数——sum(adults, children, babies)会把三列所有数值汇总成一个单一总和,而mutate()需要为数据框的每一行生成对应的值,所以长度不匹配导致报错。
以下是两种适合新手的基础解法:
解法1:直接列元素相加(最直观)
先确保加载dplyr包,然后直接对每行的三列数值做加法:
# 先安装/加载dplyr包(如果还没装的话) install.packages("dplyr") library(dplyr) # 生成guests列 bookings_df <- bookings_df %>% mutate(guests = adults + children + babies)
这种方式和手动计算每行宾客数的逻辑完全一致,适合理解基础运算逻辑。
解法2:用rowSums函数(适合多列场景)
如果之后需要计算更多列的行总和,用rowSums()更高效,还能处理缺失值:
library(dplyr) bookings_df <- bookings_df %>% mutate(guests = rowSums(select(., adults, children, babies), na.rm = TRUE))
select(., adults, children, babies):选中需要求和的三列na.rm = TRUE:如果数据里有缺失值(NA),会自动忽略,避免结果变成NA
额外注意
- 确认列名拼写完全正确,比如有没有把
children写成child之类的错误 - 运行代码前确保
bookings_df是正确加载到R中的数据框
内容的提问来源于stack exchange,提问作者G. R.
相关产品推荐
相关产品推荐

