R根据if else条件创建新列

Bob*_*Bob 5 r dataframe

我有一个由n列组成的数据框,其中一个是food.food列可能的值是apple,tomato,cabbage,sausage,beer,vodka,potato.我想在我的data数据框中创建一个新列,如下所示:if food==applefood==tomatoor food==potato,然后赋值vegetables,否则只data$food赋值.

所以,如果数据框是这样的:

ID ..(some other columns).. food

1                           apple
2                           sausage
3                           tomato
4                           cabbage
5                           vodka
Run Code Online (Sandbox Code Playgroud)

那么结果应如下:

ID ..(some other columns).. food        category

1                           apple       vegetable
2                           sausage     sausage
3                           tomato      vegetable
4                           cabbage     vegetable
5                           vodka       vodka
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

小智 5

那这个呢?

# df is your data frame
veg <- c("tomato", "apple", "potato")
df$category <- ifelse(df$food %in% veg, "vegetable", df$food)
Run Code Online (Sandbox Code Playgroud)


Rom*_*rik 4

我将复制变量并查找哪些行对应于您的标准,并仅替换这些行的值。我还添加了一个新的因子级别以实现整洁的簿记。

xy <- data.frame(food = sample(c("apple", "tomato", "cabbage", "sausage", "beer", "vodka", "potato"), 50, replace = TRUE))

xy$newcol <- xy$food
levels(xy$newcol) <- c(levels(xy$newcol), "veggy")
xy[xy$food %in% c("apple", "tomato", "potato"), "newcol"] <- "veggy"
xy

      food  newcol
1    apple   veggy
2    vodka   vodka
3  sausage sausage
4  cabbage cabbage
5    vodka   vodka
6   potato   veggy
7  cabbage cabbage
8  cabbage cabbage
...
Run Code Online (Sandbox Code Playgroud)