Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据使用tidyverse[R]的组应用变量操作_R_Dplyr_Tidyverse - Fatal编程技术网

根据使用tidyverse[R]的组应用变量操作

根据使用tidyverse[R]的组应用变量操作,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我甚至不太确定如何用谷歌搜索我的问题,所以我认为最好用一个例子来解释我想要实现的目标。总之,我想乘以数据帧的每个值,由一些变量分组,乘法值将取决于它是哪个组。我将举一个例子: data <- data.frame(group = c("a", "b", "c"), value = c(1, 2, 3)) multiplier <- c(a = 1, b = 2, c = 3) data %>% group_by(group) %>%

我甚至不太确定如何用谷歌搜索我的问题,所以我认为最好用一个例子来解释我想要实现的目标。总之,我想乘以数据帧的每个值,由一些变量分组,乘法值将取决于它是哪个组。我将举一个例子:

    data <- data.frame(group = c("a", "b", "c"), value = c(1, 2, 3))
    multiplier <- c(a = 1, b = 2, c = 3)

    data %>% 
    group_by(group) %>%
    // Something that multiplies the value column by the corresponding multiplier contained in the vector
数据%
//将值列乘以向量中包含的相应乘数的东西
编辑:


替换value列的预期返回值应分别为顺序的1、4和9。

我认为这应该做到:

library(dplyr)
data %>%
    mutate(value = value * multiplier[as.character(group)])
#  group value
#1     a     1
#2     b     4
#3     c     9
或者,您可以将
乘数
附加为
数据
列,然后进行计算

data %>%
    mutate(mutiplier = multiplier[as.character(group)]) %>%
    mutate(new.value = value * multiplier)
#  group value mutiplier new.value
#1     a     1         1         1
#2     b     2         2         4
#3     c     3         3         9

base R
中,我们可以

transform(merge(data, stack(multiplier), by.x = 'group', by.y = 'ind'),
        value = value * values)[-3]
#   group value
#1     a     1
#2     b     4
#3     c     9

谢谢如果乘数值存在于一个数据帧上,组在一列,乘数在另一列,它将类似于您展示的解决方案,或者最好将乘数传递给一个向量,并将其命名为组?有趣的问题。我几乎将乘数指定为data.frame中的一列。我将用
dplyr
的方法编辑我的答案。这似乎是一个非常有趣的方法!如果我错了,请纠正我,例如,如果乘数向量与数据帧长度不同,则通过添加该列,组“a”的所有条目(例如)将对其所有观测重复组的相应乘数?希望我的解释是正确的。考虑<代码>数据=数据.Frm(组=RP(C(“A”)、“B”、“C”),每个=2),值=1∶6)< /代码>。在这种情况下,
乘数
列将是
c(1,1,2,2,3,3)