r - 在 R 中构建一个新变量,该变量取决于另一个变量的值
问题描述
我必须建立一个新变量(称为:条件)。我的数据框包含三个距离变量:distance1.1、distance1.2、distance1.3(根据他们的情况,测试对象总是只有三个变量中的两个有值)
如果变量“距离 1.1”中没有值 (NA),则新条件的值应为 1。
如果变量“距离 1.2”中没有值 (NA),则新条件的值应为 2。
如果变量“距离 1.3”中没有值 (NA),则新条件的值应为 3。
谁能帮助我,我如何在 R 中构建这个新变量?
解决方案
如果您有这样的 data.frame:
df <- data.frame(
distance1.1 = c(NA, 2, 3, 4),
distance1.2 = c(1, NA, 3, NA),
distance1.3 = c(1, 2, NA, 4)
)
df
distance1.1 distance1.2 distance1.3
1 NA 1 1
2 2 NA 2
3 3 3 NA
4 4 NA 4
您可以使用apply
逐行识别哪些列有缺失NA
值。您可以使用sub
提取列名的最后一位来存储在新condition
列中。
df$condition <- apply(df, 1,
function(x) sub('distance1.(\\d+)', '\\1', names(which(is.na(x))))
)
df
distance1.1 distance1.2 distance1.3 condition
1 NA 1 1 1
2 2 NA 2 2
3 3 3 NA 3
4 4 NA 4 2
如果您可能连续有多个缺失值,您可以在apply
函数中寻求其他选项,具体取决于您想要condition
的外观。
推荐阅读
- django - 将域路径添加到 django html 模板
- javascript - 是否有任何更新来修复警告“ViewPager Android 已从 react-native 核心中提取”?
- keycloak - 向 JWT 添加声明的 Keycloak 协议映射器获取空指针异常
- laravel - 显示每个 b 表行的模式的按钮
- sql - 当我添加带有匕首 † 符号的 where 子句时,我的查询失败
- python-3.x - 为什么回调发生在执行开始时,甚至在事件之后?
- javascript - 断言文件下载的 Testcafe 示例
- excel - 有没有办法用相同的下拉列表返回多个值?
- php - 在 SQL 中输入日期时间
- r - 为什么方法一比方法二快?