如何比较两列并将结果写入第三列-使用R
X1是主队的列如何比较两列并将结果写入第三列-使用R,r,dataframe,R,Dataframe,X1是主队的列 goals X1 X2 1 1 1 2 4 0 3 0 0 4 2 1 5 1 1 6 1 1 7 1 1 8 0 0 ... 如果我键入嵌套的elseif,我会在控制台中得到正确的结果 > ifelse(goals$X1 > goals$X2, goals$winner <- "h",ifelse(goals$X1 < goals$X2, goals$winner &l
goals
X1 X2
1 1 1
2 4 0
3 0 0
4 2 1
5 1 1
6 1 1
7 1 1
8 0 0
...
如果我键入嵌套的elseif,我会在控制台中得到正确的结果
> ifelse(goals$X1 > goals$X2, goals$winner <- "h",ifelse(goals$X1 <
goals$X2, goals$winner <- "d",goals$winner <- "a"))
[1] "a" "h" "a" "h" "a" "a" "a" "a" "h" "h" "h" "h" "h" "a" "h" "a" "a" "h"
[19] "h" "a" "h" "h" "h" "d" "h" "h" "h" "h" "a" "a" "a" "d" "d" "h" "d" "h"
[37] "h" "h" "a" "a" "h" "h" "a" "h" "h" "h" "h" "h" "h" "h" "a" "h" "h" "h"
[55] "h" "a" "h" "h" "h" "h" "h" "a" "h" "h" "h" "h" "d" "h" "h" "a" "h" "a"
[73] "d" "h" "d" "h" "h" "h" "h" "h" "h" "a" "d" "h" "d" "h" "d" "d" "d" "a"
[91] "h" "h" "h" "d" "a" "h" "h" "h" "h" "h" "h" "h" "d" "h" "h" "a" "d" "h"
[109] "h" "a" "d" "h" "h" "h" "h" "h" "a" "d" "d" "h" "h" "h" "h" "h" "h" "h"
[127] "h" "a" "h" "h" "h" "h" "h" "a" "h" "a"
我哪里错了?您的问题是因为您在ifelse中更新了winner列。要做你想做的事,你必须做:
goals$winner <-ifelse(goals$X1 > goals$X2, "h",ifelse(goals$X1 < goals$X2, "d", "a"))
goals$winner goals$X2,“h”,ifelse(goals$X1
您没有以正确的方式使用ifelse:
ifelse(test_expression,x,y)
这里,test_表达式必须是逻辑向量(或者可以强制为逻辑向量的对象)。返回值是一个与test_表达式长度相同的向量
如果test_表达式的对应值为TRUE,则此返回向量包含来自x的元素,如果test_表达式的对应值为FALSE,则返回向量包含来自y的元素。您不应尝试在这里分配ifelse
中的值,而应将整个ifelse
完全分配给新对象
goals$winner <- ifelse(goals$x1 > goals$x2, "h", ifelse(goals$x1 < goals$x2, "d", "a"))
答复:
df
x1 x2 winner
1 1 1 a
2 4 0 h
3 0 0 a
4 2 1 h
5 1 1 a
6 1 1 a
7 1 1 a
8 0 0 a
>
goals$winner goals$X2,“h”,ifelse(goals$X1
感谢您解决了这个问题。加上卡比尔的解释,我学到了很多!
df <- data.frame(x1 = c(1,4,0,2,1,1,1,0),x2=c(1,0,0,1,1,1,1,0))
df$winner <- NULL
df[df$x1 > df$x2,"winner"] <- "h"
df[df$x1 < df$x2,"winner"] <- "d"
df[df$x1 == df$x2,"winner"] <- "a"
df
x1 x2 winner
1 1 1 a
2 4 0 h
3 0 0 a
4 2 1 h
5 1 1 a
6 1 1 a
7 1 1 a
8 0 0 a
>