R 仅对某些组进行除法计数
数据示例R 仅对某些组进行除法计数,r,R,数据示例 Var1 <- rep(c("X", "Y", "Z"),2) Var2 <- rep(c("A","B"),3) Count<-sample(c(10:100), 6) data<-data.frame(Var1,Var2,Count) 我只想将var2b的计数除以2,得到 Var1 Var2 Count Count2 1 X A 89
Var1 <- rep(c("X", "Y", "Z"),2)
Var2 <- rep(c("A","B"),3)
Count<-sample(c(10:100), 6)
data<-data.frame(Var1,Var2,Count)
我只想将var2b的计数除以2,得到
Var1 Var2 Count Count2
1 X A 89 89
2 Y B 97 48.5
3 Z A 29 29
4 X B 38 19
5 Y A 50 50
6 Z B 88 44
但我不知道如何仅基于变量进行除法
我是新来的编码,所以任何帮助是感激的 基本R解决方案:
data$Count2 <- data$Count ## copy to new variable
## Then change the subset to desired value. LHS subsets, RHS provides change
data$Count2[data$Var2 == "B"] <- data$Count[data$Var2 == "B"]/2
与Brian的dplyr解决方案略有不同,请使用
replace
更新mutate
函数中列的一部分
require(tidyverse)
Var1 <- rep(c("X", "Y", "Z"),2)
Var2 <- rep(c("A","B"),3)
Count<-sample(c(10:100), 6)
data<-data.frame(Var1,Var2,Count)
data %<>%
mutate(Count=replace(Count, Var2=='B', Count[Var2=='B']/2))
require(tidyverse)
Var1带有数据表
library(data.table)
setDT(data)[, Count := as.numeric(Count)][Var2 == 'B', Count := Count/2]
在基数R中:df$Count2=ifelse(df$Var2==“B”,df$Count/2,df$Count)
谢谢!我知道它必须是像Ifether一样的东西,但我无法解决它<代码>内(mydf,{Count2也可以使用内的+1完成。
require(tidyverse)
Var1 <- rep(c("X", "Y", "Z"),2)
Var2 <- rep(c("A","B"),3)
Count<-sample(c(10:100), 6)
data<-data.frame(Var1,Var2,Count)
data %<>%
mutate(Count=replace(Count, Var2=='B', Count[Var2=='B']/2))
library(data.table)
setDT(data)[, Count := as.numeric(Count)][Var2 == 'B', Count := Count/2]