我当前正在使用的数据包含四列,我想通过它们的唯一ID将它们累加到新列中。我是使用R的新手,所以可以提供任何帮助!谢谢
输入列和所需输出的示例:
答案 0 :(得分:0)
像这样(以虹膜数据集为例)
iris$new_col <- iris$Sepal.Length + iris$Sepal.Width
以您为例
df$Sum <- df$Pillar_1 + df$Pillar_2 + df$Pillar_3
这假设您的数据帧称为df
答案 1 :(得分:0)
使用dplyr
:
library(tidyverse)
df <- tibble(
opportunity = c(
639495, 303678, 629464, 297662, 302891
),
`Pillar 1` = c(
4, 3, 5, 3, 2
),
`Pillar 2` = c(
7, 8, 9, 4, 4
),
`Pillar 3` = c(
4, 6, 2, 5, 8
)
)
df %>% mutate(
Sum = `Pillar 1` + `Pillar 2` + `Pillar 3`
)
产生输出
# A tibble: 5 x 5 opportunity `Pillar 1` `Pillar 2` `Pillar 3` Sum 1 639495 4 7 4 15 2 303678 3 8 6 17 3 629464 5 9 2 16 4 297662 3 4 5 12 5 302891 2 4 8 14
答案 2 :(得分:0)
df <- data.frame(
opportunity = c(
639495, 303678, 629464, 297662, 302891
),
Pillar1 = c(
4, 3, 5, 3, 2
),
Pillar2 = c(
7, 8, 9, 4, 4
),
Pillar3 = c(
4, 6, 2, 5, 8
)
)
df$Sum <- apply(df[,-1], 1, sum)
> df
opportunity Pillar1 Pillar2 Pillar3 Sum
1 639495 4 7 4 15
2 303678 3 8 6 17
3 629464 5 9 2 16
4 297662 3 4 5 12
5 302891 2 4 8 14
答案 3 :(得分:0)
使用dplyr
,您还可以执行以下操作:
library(dplyr)
df %>%
mutate(Sum = rowSums(select(., contains("Pillar"))))
输出:
opportunity Pillar1 Pillar2 Pillar3 Sum
1 639495 4 7 4 15
2 303678 3 8 6 17
3 629464 5 9 2 16
4 297662 3 4 5 12
5 302891 2 4 8 14
如果您想在Sum
中包含某些不包含Pillar
作为字符串的列,则还可以按如下索引进行过滤:
df %>%
mutate(Sum = rowSums(select(., 2:4)))
或者如果您想对除第一列之外的所有列求和(而不是2:4
),那么-1
而不是compilerPath
。
答案 4 :(得分:0)
这里是使用tidyverse
library(tidyverse)
df %>%
mutate(Sum = select(., starts_with('Pillar')) %>%
reduce(`+`))
# opportunity Pillar1 Pillar2 Pillar3 Sum
#1 639495 4 7 4 15
#2 303678 3 8 6 17
#3 629464 5 9 2 16
#4 297662 3 4 5 12
#5 302891 2 4 8 14
df <- structure(list(opportunity = c(639495, 303678, 629464, 297662,
302891), Pillar1 = c(4, 3, 5, 3, 2), Pillar2 = c(7, 8, 9, 4,
4), Pillar3 = c(4, 6, 2, 5, 8)), class = "data.frame",
row.names = c(NA, -5L))