如何在R数据框中只划分某一列中的某个因子?

cs7cruho  于 2023-02-20  发布在  其他
关注(0)|答案(4)|浏览(110)

以下是示例数据集:

library(data.table)
df = data.table(x = c(1000,2000,10,2), y = c('A','A','B','B'))

我只想除以df$y == "A" by 1000,最终的数据集应该显示为:

df = data.table(x = c(1,2,10,2), y = c('A','A','B','B'))
irlmq6kh

irlmq6kh1#

您需要创建一个条件语句。
以R为底:

df$x <- ifelse(df$y == "A", df$x/1000, df$x)

dplyr中:

library(dplyr)
df <- df |>
    mutate(x = if_else(y == "A", x/1000, x))
balp4ylt

balp4ylt2#

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

jyztefdp

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
irlmq6kh

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

相关问题