以下是示例数据集:
library(data.table) df = data.table(x = c(1000,2000,10,2), y = c('A','A','B','B'))
我只想除以df$y == "A" by 1000,最终的数据集应该显示为:
df$y == "A" by 1000
df = data.table(x = c(1,2,10,2), y = c('A','A','B','B'))
irlmq6kh1#
您需要创建一个条件语句。以R为底:
df$x <- ifelse(df$y == "A", df$x/1000, df$x)
在dplyr中:
dplyr
library(dplyr) df <- df |> mutate(x = if_else(y == "A", x/1000, x))
balp4ylt2#
data.table选项使用fifelse,如下所示:
data.table
fifelse
library(data.table) df = data.table(x = c(1000,2000,10,2), y = c('A','A','B','B')) df[,x:=fifelse(y == "A", x/1000, x),] df #> x y #> 1: 1 A #> 2: 2 A #> 3: 10 B #> 4: 2 B
创建于2023年2月18日,使用reprex v2.0.2
jyztefdp3#
我们可以使用data.table方法,因为输入是data.table
library(data.table) df[y == 'A', x := x/1000]
> df x y 1: 1 A 2: 2 A 3: 10 B 4: 2 B
irlmq6kh4#
基数R:使用[进行子集化:
[
df$x[df$y == "A"] <- df$x[df$y == "A"]/1000
x y 1: 1 A 2: 2 A 3: 10 B 4: 2 B
4条答案
按热度按时间irlmq6kh1#
您需要创建一个条件语句。
以R为底:
在
dplyr
中:balp4ylt2#
data.table
选项使用fifelse
,如下所示:创建于2023年2月18日,使用reprex v2.0.2
jyztefdp3#
我们可以使用
data.table
方法,因为输入是data.table
irlmq6kh4#
基数R:使用
[
进行子集化: