根据使用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)
。