R 将每行的数字相加,求和
有这样一个数据帧R 将每行的数字相加,求和,r,R,有这样一个数据帧 data.frame(id = c(1,2), num = c("30, 4, -2,","10, 20")) 如何从num列中获取每一行的总和,并在计算中包含负数? 预期产出的例子 data.frame(id = c(1,2), sum = c(32, 30) 如果您可以使用软件包,那么整洁的软件包会使这变得容易,并且使用整洁的数据主体,一旦您习惯了这种方式,这些数据主体就会变得快速和简单 library(tidyr) library(dplyr) df %>%
data.frame(id = c(1,2), num = c("30, 4, -2,","10, 20"))
如何从num列中获取每一行的总和,并在计算中包含负数?
预期产出的例子
data.frame(id = c(1,2), sum = c(32, 30)
如果您可以使用软件包,那么整洁的软件包会使这变得容易,并且使用整洁的数据主体,一旦您习惯了这种方式,这些数据主体就会变得快速和简单
library(tidyr)
library(dplyr)
df %>%
# Convert the string of numbers to a tidy dataframe
# with one number per row with the id column for grouping
separate_rows(num,sep = ",") %>%
# Convert the text to a number so we can sum
mutate(num = as.numeric(num)) %>%
# Perform the calculation for each id
group_by(id) %>%
# Sum the number
summarise(sum = sum(num,na.rm = TRUE)) %>%
# Ungroup for further use of the data
ungroup()
# A tibble: 2 x 2
# id sum
# <dbl> <dbl>
# 1 1 32
# 2 2 30
library(tidyr)
图书馆(dplyr)
df%>%
#将数字字符串转换为整齐的数据帧
#每行一个数字,id列用于分组
单独的_行(num,sep=“,”)%>%
#将文本转换为数字,这样我们就可以求和了
变异(num=as.numeric(num))%>%
#对每个id执行计算
分组依据(id)%>%
#求和
总结(总和=总和(num,na.rm=TRUE))%>%
#解组以进一步使用数据
解组()
#一个tibble:2x2
#身份证金额
#
# 1 1 32
# 2 2 30
使用Base R
可以执行以下操作:
# data
df <- data.frame(id = c(1,2), num = c("30, 4, -2,","10, 20"))
# split by ",", convert to numeric and then sum
df[, 2] <- sapply(strsplit(as.character(df$num), ","), function(x){
sum(as.numeric(x))
})
# result
df
# id num
# 1 1 32
# 2 2 30
#数据
df库(stringr)
df