我有一个由n列组成的数据框,其中一个是food.food列可能的值是apple,tomato,cabbage,sausage,beer,vodka,potato.我想在我的data数据框中创建一个新列,如下所示:if food==apple或food==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)
我将复制变量并查找哪些行对应于您的标准,并仅替换这些行的值。我还添加了一个新的因子级别以实现整洁的簿记。
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)