首页 > 解决方案 > R:根据两个条件创建一个变量

问题描述

数据如下(x 和 dummy 是引用“id”的变量):

   tweet_id <- c(1,2,6,3,4,5,1,2)
    X <- c(0.12426699, 0.12426699, 0.08685890, 0.08685890, 0.08685890, 0.28853901, 0.09102392, 0.09102392)
    id <- c(1,1,2,2,2,3,4,4)
    dummy <- c(1,1,1,1,1,0,0,0)        
    dt <- as.data.frame(cbind(id, X , tweet_id, dummy))

我正在寻找一个函数来创建具有以下值的列:

第1行:计算tweet_id = 1的所有X的总和,其中dummy = 1

第 2 行:计算 tweet_id = 2 的所有 X 的总和,其中 dummy = 1

第 3 行:计算 tweet_id = 6 的所有 X 的总和,其中 dummy = 1

第 4 行:计算所有 X 的总和,对于 tweet_id = 3 其中 dummy = 1

……

第 7 行:计算 tweet_id = 1 的所有 X 的总和,其中 dummy = 0

第 8 行:计算 tweet_id = 2 的所有 X 的总和,其中 dummy = 0

所以基本上在每一行,我想计算与原始推文 id 相关的东西,基于 id 特征“虚拟”的开放条件

我希望很清楚

标签: r

解决方案


您可以使用库中的group_by函数dplyr

library(dplyr)
dt %>% group_by(tweet_id, dummy) %>% summarise(suma = sum(X))

输出:

# A tibble: 8 x 3
# Groups:   tweet_id [6]
  tweet_id dummy   suma
     <dbl> <dbl>  <dbl>
1        1     0 0.0910
2        1     1 0.124 
3        2     0 0.0910
4        2     1 0.124 
5        3     1 0.0869
6        4     1 0.0869
7        5     0 0.289 
8        6     1 0.0869

祝你好运!


推荐阅读