【发布时间】:2015-05-26 10:56:55
【问题描述】:
我有以下数据框:
ID C1 C2
1 0 100
2 29 0
3 0 0
4 789 400
我想根据“C1”和“C2”列指明“类型”。例如,如果 C1 和 C2 都等于 0(或 NA),则它是“类型 1”。如果 C1 != 0 且 C2 = 0(或 NA),则为“类型 2”。 类型 3 --> C1 = 0 (& NA), C2 != 0 类型 4 --> C1 != 0 和 C2 != 0
输出应该是这样的:
Type
Type 4
Type 2
Type 1
Type 3
我尝试了几种不同的方法:
for (i in 1:nrow(df))
{
if
((is.na(df[i,12]) == TRUE) | (df[i,12] == 0.00) &
(is.na(df[i,13]) == TRUE) | (df[i,13] == 0.00))
{
df2[i,1] = "Type 1"
}
else
{
df2[i,1] = "Other Type"
}
}
我没有在上面的 for 循环中包含所有条件,但它确实很慢。
这是我尝试的另一种方法(不完整的代码,只是尝试):
ifelse((is.na(Test_Customer[,2]) | Test_Customer[,2]==0), "Type 1", "Type 2")
对于 ifelse 语句,我猜我必须将其包装到一个函数中,然后使用 apply 函数将其应用于数据帧的所有行。但是,R 是否采用嵌套 ifelse 语句,如 excel 中的“if”语句?
如果有人知道这样做的替代方法,那就太好了!提前非常感谢!!
【问题讨论】:
-
您提到类型 1 和 2 的逻辑,但您想要的输出显示 1 到 4。请提供更详细的信息。
标签: r