我有一个数据框,我想根据多个条件创建一个列:
v1 v2 v3 v4 v5
4 1 2 4 5
5.5 2 4 5 6
21 9 20 30 50
6 4 5 7 9
10 3 6 5 9
基本上,创建具有以下可能值的v6:Cat,dog,ant,hog
我知道如何针对单一条件执行此操作,但不是多条件。
答案 0 :(得分:5)
嵌套的ifelse语句:
df$v6 <- with(df, ifelse(
v1 >= v2 & v1 <= v3, 'cat', ifelse(
v1 >= v3 & v1 <= v4, 'dog', ifelse(
v1 >= v4 & v1 <= v5, 'ant', ifelse(
v1 >= v5, 'hog', 'whoops')))))
> df
v1 v2 v3 v4 v5 v6
1 4.0 1 2 4 5 dog
2 5.5 2 4 5 6 ant
3 21.0 9 20 30 50 dog
4 6.0 4 5 7 9 dog
5 10.0 3 6 5 9 hog
答案 1 :(得分:0)
假设d是您的数据框,您可以使用ifelse
函数尝试类似下面的内容。
d[,6] <- rep(" ", 5)
d[,6] <- ifelse(d[,1] >= d[,2] & d[,1] <= d[,3] & d[,6] == " ", "cat", d[,6])
d[,6] <- ifelse(d[,1] >= d[,3] & d[,1] <= d[,4] & d[,6] == " ", "dog", d[,6])
d[,6] <- ifelse(d[,1] >= d[,4] & d[,1] <= d[,5] & d[,6] == " ", "ant", d[,6])
d[,6] <- ifelse(d[,1] >= d[,5] & d[,6] == " ", "hog", d[,6])