我正在尝试在r中创建一个id虚拟人物。情况有点棘手。如果id = 15的长度,我想设置id1 = 1,如果长度= 11,则设置为0(这是唯一的两种情况)。 我尝试了以下代码:
id1 <- ifelse(nchar(as.character(data$id) == "15"), 1,0)
代码可以运行但是当我查看数据时,我发现生成的所有值都是1而不是0,1。换句话说,我怀疑ifelse函数的设置出了什么问题。
我也试过这个:
id1 <- factor(ifelse(nchar(as.character(data$id) == "15"), 1,0))
仍然得到相同的结果。
有人可以帮我解决这个问题吗?
数据如下:
id
799679d656c
032a71ce6132f38
b89602494f78508
c817fdde8fd
74e69d6b574
37d4c1ad5e56d06
63d89a0171f
c8bdb87cd537472
bdc09ee5421b1ec
967f47694e6
e4d825005b1
0eb6b851bba
9b27fa6949aaa42
bc82516f141
c4c7f10be01
cb90e05f8a4
cb45e5a890e
a93f57b965d78eb
5e3bb4f29457d75
62aa2cb20a30e07
33e8f2cd8bd
fdecbac8b827917
b51ea777c53d720
答案 0 :(得分:3)
没有明确的ifelse
声明:
id1 <- (nchar(as.character(data$id)) == 15)+0L
这是有效的,因为由于R代码的简洁,比较运算符==
测试双方的相等性而不使用if,或者否则。 if语句隐含在测试中,将可能冗长的编程任务替换为在R中简洁执行的编程任务。(@DavidArenburg为零添加信用)
来自user20650的评论中提到的对代码的直接修复:
id1 <- ifelse(nchar(as.character(data$id)) == 15, 1,0)
<强>结果
id1
#[1] 0 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 1 1