R语言 如果一个变量等于一个字符串,则另一个变量的数学运算?

qxgroojn  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(117)

我想在一个数据框中做一个简单的操作。数据框包含几个变量,对应于用三个字母编码表示的国家。我想增加或减少这些特定国家的变量值。
有一个类似的问题问here。但是,在这种情况下,值是字符串。
例如,假设我有以下 Dataframe :

set.seed(10)

a <- data.frame(country = rep(c("aaa" , "bbb" , "ccc") , times = 3) ,
                year = rep(c(1990 , 1991 , 1992), each = 3) ,
                c = sample(9))

给出:

country year c
1     aaa 1990 9
2     bbb 1990 2
3     ccc 1990 4
4     aaa 1991 6
5     bbb 1991 3
6     ccc 1991 7
7     aaa 1992 5
8     bbb 1992 1
9     ccc 1992 8

例如,我想在对应于“aaa”的每个国家加上5,给出:

country year  c
1     aaa 1990 14
2     bbb 1990  2
3     ccc 1990  4
4     aaa 1991 11
5     bbb 1991  3
6     ccc 1991  7
7     aaa 1992 10
8     bbb 1992  1
9     ccc 1992  8

有没有一个高效的代码来做到这一点?我很感激任何帮助。

vmdwslir

vmdwslir1#

这里是一个两步基地R的方式。

i <- df$country == "aaa"
df$c[i] <- df$c[i] + 5

一句俏皮话应该是

df$c[df$country == "aaa"] <- df$c[df$country == "aaa"] + 5

编辑

如果列country缺少值,NA,则使用

i <- which(df$country == "aaa")

或与等效的单线连接。

相关问题