dplyr:对不同的组应用不同的功能
我是一个尝试使用dplyr进行数据分析的初学者。我的数据基本上来自一些操作(“Ops”),并且排列有序。我经常需要根据操作类型对观察值(“Num”)应用不同的函数,然后将它们组合起来进行分析 下面是一个简单的例子:dplyr:对不同的组应用不同的功能,r,data.table,dplyr,R,Data.table,Dplyr,我是一个尝试使用dplyr进行数据分析的初学者。我的数据基本上来自一些操作(“Ops”),并且排列有序。我经常需要根据操作类型对观察值(“Num”)应用不同的函数,然后将它们组合起来进行分析 下面是一个简单的例子: X Num Ops 0 37 S 1 18 R 2 11 S 3 3 R 4 11 S 5 13 R ... ... ... 我想根
X Num Ops
0 37 S
1 18 R
2 11 S
3 3 R
4 11 S
5 13 R
... ... ...
我想根据“Ops”列的值添加一个新列“Num2”,例如:
我不确定我是否应该做大量的ifelse
作业——这让我觉得既多余又低效
一定有更好的解决方案,也许可以使用“分组、选择、筛选”的组合。有什么建议吗
基本上,我想知道是否有一种方法可以根据特定的标准对数据进行分组,然后对不同的子集应用不同的函数,最后将结果合并到一起。我发现的典型dplyr示例将相同的函数应用于所有子集
@下面的eddi使用data.table提供了更通用的解决方案。是否有dplyr等价物?对于数值返回值,您可以轻松避免使用
ifelse
。只需将条件转换为数值,并使用适当的数值计算
df %>% mutate(Num2 = Num - 2*(Ops=="S") + 1)
有一个包含
mutate\u if
函数的dplyextras
包
# install dplyrExtras
library(devtools)
install_github(repo="skranz/dplyrExtras")
require(dplyrExtras)
# code using mutate_if
df %>%
mutate(Num2 = Num+1) %>%
mutate_if(Ops=="S", Num2 = Num-1)
我正在寻找更通用的解决方案。函数通常更复杂,并且“按列分组”有两个以上的值。您可以尝试以下方法:检查、和,以获取想法和可能的替代技术。感谢您的建议。这些不是我想要的。基本上,我想知道是否有一种方法可以根据特定的标准对数据进行分组,对不同的子集应用不同的函数,然后将结果合并到一起。典型的dplyr示例将相同的函数应用于所有子集。@eddi看起来您确实为data.table提供了更通用的解决方案。有没有一个dplyr等价物?@Dong不确定,我不是一个似乎浪费的
dplyr
专家。我想在执行group_by(Ops)之后取消条件操作。可能的
# install dplyrExtras
library(devtools)
install_github(repo="skranz/dplyrExtras")
require(dplyrExtras)
# code using mutate_if
df %>%
mutate(Num2 = Num+1) %>%
mutate_if(Ops=="S", Num2 = Num-1)