Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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
R 仅对某些组进行除法计数_R - Fatal编程技术网

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]