我有一张如下图所示的表格,我试图用简单的if语句仅在食物是“桔子”的情况下返回国家名称。第三列是期望的结果,第4列是我在R.r如果语句返回级别数字而不是级别文本
在Excel中得到公式将是:
=IF(A2="Oranges",B2,"n/a")
我已经使用下列R-代码来生成了“oranges_country”变量:
table$oranges_country <- ifelse (Food == "Oranges", Country , "n/a")
[按照上述图像]的代码返回电平的数目(例如,6)在所述等级列表“国家”,而塔n'国家'本身(例如“西班牙”)。我明白这是从哪里来的(下面摘录中的位置),但是使用几个嵌套的if语句时尤其是一种痛苦。
levels(Country)
[1] "California" "Ecuador" "France" "New Zealand" "Peru" "Spain" "UK"
必须有一个简单的方法来改变这???
的要求,在注释:dput(表)输出如下: dput(table) structure(list(Food = structure(c(1L, 1L, 3L, 1L, 1L, 3L, 3L, 2L, 2L), .Label = c("Apples", "Bananas", "Oranges"), class = "factor"), Country = structure(c(3L, 7L, 6L, 4L, 7L, 6L, 1L, 5L, 2L), .Label = c("California", "Ecuador", "France", "New Zealand", "Peru", "Spain", "UK" ), class = "factor"), Desired_If.Outcome = structure(c(2L, 2L, 3L, 2L, 2L, 3L, 1L, 2L, 2L), .Label = c("California", "n/a", "Spain"), class = "factor"), oranges_country = c("n/a", "n/a", "6", "n/a", "n/a", "6", "1", "n/a", "n/a"), desiredcolumn = c(NA, NA, 6L, NA, NA, 6L, 1L, NA, NA)), .Names = c("Food", "Country", "Desired_If.Outcome", "oranges_country", "desiredcolumn"), row.names = c(NA, -9L), class = "data.frame")
谢谢Max。这是我在我的代码提取上面'table $ oranges_country < - ifelse(Food ==“Oranges”,Country,“n/a”)''所做的事情。我刚刚尝试过你的轻微变体,它给出了相同的结果'> desiredcolumn [1]不适用6不适用6 1不适用' – Rob
请问您可以使用dput(table)发布表的输出。如果它有很多行,那么只会给我们前10行。 – MaxPD
你可以先请做--'表$国家<-as.character(表$国家)',然后运行ifelse代码。 – MaxPD