全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1134 2
2017-12-31
现有一个date.frame名为dataset, 其中有两个因子A和B, 取值均为“No"或者"Yes", 现在要根据A和B计算一个新的变量C, 要求为当A和B都是“No"的时候,C取值为“No”, 当A和B中任一个为“Yes”的时候,C取值为“Yes”, 我一开始写的代码如下:

dateset <- within(dataset, {
    C <- "No"
    C [A == "Yes" | B == "Yes"] <- "Yes"
})

结果出来C会有很多取值变为NA

而以下这种写法就没有问题:

dateset <- within(dateset, {
  C <- NA
  C [A == "Yes" | B == "Yes"] <- "Yes"
  C [A == "No" & B == "No"] <- "No"
})


请问前面一种写法错在哪里?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-1-2 10:36:02
第一种C的长度只有1是不是?后面没有判断AB为NO的就没有赋值。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-1-2 10:45:53
jinkelazzz 发表于 2018-1-2 10:36
第一种C的长度只有1是不是?后面没有判断AB为NO的就没有赋值。
好的,应该是这样,谢谢!

我一开始以为在within data.frame里面新建vector并赋一个具体值这个vector长度就会默认跟其他不缺失的长度一样。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群