我正在尝试根据相邻列中字符串的值将不同的函数应用于不同的行。我的数据框如下所示:
type size
A 1
B 3
A 4
C 2
C 5
A 4
B 32
C 3
我想将不同的函数应用于类型 A、B 和 C,以给出第三列“size2”。例如,假设以下函数适用于 A、B 和 C:
for A: size2 = 3*size
for B: size2 = size
for C: size2 = 2*size
我可以使用此代码分别为每种类型执行此操作
df$size2 <- ifelse(df$type == "A", 3*df$size, NA)
df$size2 <- ifelse(df$type == "B", 1*df$size, NA)
df$size2 <- ifelse(df$type == "C", 2*df$size, NA)
但是,如果不删除所有其他值,我似乎无法对所有类型执行此操作。我尝试使用此代码将函数的应用限制为仅那些 NA 值(即,保留现有值并仅填写 NA 值),但使用此代码不起作用:
df$size2 <- ifelse(is.na(df$size2), ifelse(df$type == "C", 2*df$size, NA), NA)
有没有人有任何想法?是否可以在“is.na(df$size2)”和“ifelse(df$type == "C"" 中使用某种 AND 语句?
非常感谢!