【发布时间】:2015-07-11 19:49:16
【问题描述】:
我被 R 中的 ifelse 函数困在一个简单的问题参数中。我是 R 的新用户,我正在尝试根据另一列(“第二列”)。
当我尝试ifelse 函数时,我收到了这个错误"argument "no" is missing, with no default"
我所需要的只是:如果测试(条件)为 FALSE,则将值(来自因子变量)原样保留在“第一列”中。
这是我的数据框的示例,它有 ~6000 obs
#
# first second third
# 1 Cluster 1 Chest Pain 1
# 2 Coronary Artery Diseases 1
# 3 Cluster 6 Anemia 5
# 4 Cluster 7 Hypertension and Cerebrovascular Disease 4
# 5 Chronic Obstructive Pulmonary Disease 2
# 6 Cluster 5 Diabetes 10
我的尝试是
sample$first= ifelse(sample$second=="Coronary Artery Diseases","Cluster 10",sample$first)
如果第二列中有“冠状动脉疾病”但第一列中的所有剩余 obs 我得到一个数字,则结果是在第一列中填充“第 10 组”。问题是“第一”是一个因素变量,我需要它成为一个因素。
有什么建议吗?
数据
sample <- structure(list(first = c("Cluster 1", "", "Cluster 6", "Cluster 7",
"", "Cluster 5"), second = c("Chest Pain", "Coronary Artery Diseases",
"Anemia", "Hypertension and Cerebrovascular Disease",
"Chronic Obstructive Pulmonary Disease", "Diabetes"),
third = c("1", "1", "5", "4", "2", "10")),
.Names = c("first", "second","third"),
class = "data.frame", row.names = c(NA, -6L))
【问题讨论】:
-
请出示您的代码。但应该遵循
ifelse( (first column is blank), (second column), (first column) )或使用子集firstcolumn[ (first column is blank)] <- second column -
感谢您的更新,对于您更新中的问题,您可以使用
as.character解决factor的问题,例如:sample$first= ifelse(sample$second=="Coronary Artery Diseases","Cluster 10", as.character(sample$first))。如果这没有帮助。您能否也发布您的预期结果,谢谢 -
谢谢!!!有用!但我有一个问题。如果我使用 as.character 函数,它不会改变我的变量的性质,这是一个因素?
-
是的,它会将其更改为
character。您可以将ifelse包装在factor调用中以将其类改回来。 -
我明白了!再次感谢您...我如何给您信用..?
标签: r if-statement conditional-statements