r - 根据特定列 R 中的值将列值乘以另一个值

标签 r rows dplyr

在以下数据集中,我想乘以列 Size 中的值按列中的值 Month1 , Month2Month3取决于我们在列 Month 中的数字.所以如果在某行 Month值为 2,我想乘以列 Size 中的值按列 Month2 中的值并将结果保存在新列 NewSize 中.非常感谢您的帮助!

Orig = c("A","B","A","A","B","A","A","B","A")
Dest = c("B","A","C","B","A","C","B","A","C")
Month = c(1,1,1,2,2,2,3,3,3)
Size = c(30,20,10,10,20,20,30,50,20)
Month1 = c(1,0.2,0,1,0.2,0,1,0.2,0)
Month2 = c(0.6,1,0,0.6,1,0,0.6,1,0)
Month3 = c(0,1,0.6,0,1,0.6,0,1,0.6)
df <- data.frame(Orig,Dest,Month,Size,Month1,Month2,Month3)
df

  Orig Dest Month Size Month1 Month2 Month3
1    A    B     1   30    1.0    0.6    0.0
2    B    A     1   20    0.2    1.0    1.0
3    A    C     1   10    0.0    0.0    0.6
4    A    B     2   10    1.0    0.6    0.0
5    B    A     2   20    0.2    1.0    1.0
6    A    C     2   20    0.0    0.0    0.6
7    A    B     3   30    1.0    0.6    0.0
8    B    A     3   50    0.2    1.0    1.0
9    A    C     3   20    0.0    0.0    0.6

最佳答案

这是使用 ifelse 的另一种选择

> transform(df, NewSize=ifelse(Month==1, Size*Month1, 
                  ifelse(Month==2, Size*Month2, Size*Month3)))
  Orig Dest Month Size Month1 Month2 Month3 NewSize
1    A    B     1   30    1.0    0.6    0.0      30
2    B    A     1   20    0.2    1.0    1.0       4
3    A    C     1   10    0.0    0.0    0.6       0
4    A    B     2   10    1.0    0.6    0.0       6
5    B    A     2   20    0.2    1.0    1.0      20
6    A    C     2   20    0.0    0.0    0.6       0
7    A    B     3   30    1.0    0.6    0.0       0
8    B    A     3   50    0.2    1.0    1.0      50
9    A    C     3   20    0.0    0.0    0.6      12

关于r - 根据特定列 R 中的值将列值乘以另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29709248/

相关文章:

r - 从多元 t 分布生成随机变量

c# - 当鼠标按住单元格时,如何在 DataGridView 中维护选定的行?

r - 在 R 中聚合分类表(带百分比)

重新排序组内的因子水平

r - 从 dplyr 使用 %>% 运算符而不在 R 中加载 dplyr

r - 如何在R中将CamelCase转换为not.camel.case

r - 使用 purrr 或 rlist 从 json 文件中查找元素

Android TV Leanback RowsFragment 在开始时保持焦点项目

R:如何在没有替换且没有连续相同值的情况下进行采样

Mysql获取数据库中重复的唯一id的数量