如何按列中的特定字符串求和?

时间:2019-04-18 21:06:20

标签: r dplyr

我正在寻找解决方案。即对于数据集=数据,我想根据X列或Y列添加值。列选择由Z列中的“字符串”决定。

dataset:

data
    Z    X    Y
"aaa"    1    10
"aaa"    1    10
"bbb"    2    20
"bbb"    2    20
"ccc"    3    30
"ccc"    3    30

effect1:

data1
    Z  sumX  sumY
"aaa"   2    20
"bbb"   4    40
"ccc"   6    60

effect2: 
data2_sum
    Z    totalXY
"aaa"    2
"bbb"    4
"ccc"    60

在此先感谢您的帮助。 问候 彼得

2 个答案:

答案 0 :(得分:0)

对于您的effect1,使用dplyr的代码很简单

library(dplyr)
df <- data.frame(
      Z =  c("aaa", "aaa","bbb","bbb","ccc","ccc"),
      X = c(1,1,2,2,3,3),
      Y = c(10,10,20,20,30,30))

df %>% 
  group_by(Z) %>% 
  summarise(sumX = sum(X),
            sumY = sum(Y))

不清楚要在effect2中计算什么

答案 1 :(得分:0)

  1. 以下是原始数据:

数据     Z X Y “ aaa” 1 10 “ aaa” 1 10 “ bbb” 2 20 “ bbb” 2 20 “ ccc” 3 30 “ ccc” 3 30

第一步,我要总结Z变量(即“ aaa”,“ bbb”,“ ccc”)的X和Y列

effect1:

数据1     Z sumX sumY “ aaa” 2 20 “ bbb” 4 40 “ ccc” 6 60

接下来,我希望effect2的代码根据这种依赖性加起来。

  1. 从Z列和新的totalXY列创建数据框 1.1。如果Z列中的“ aaa”或“ bbb”列在新的totalXY列中,请从sumX列中插入effect1中的值 1.2。如果“ Z”列为“ ccc”,则在新列的totalXY(effect2)中,插入来自sumY列的effect1的值

effect2: data2_sum     Z总XY “ aaa” 2 “ bbb” 4 “ ccc” 60