如何解决在 R 中使用数组派生新变量
考虑到我们有如下数据框并且它生成了一个数据集,现在我想根据这些变量“MPD1FL”、“MPD2FL”、“MPD3FL”推导出一个新的变量 MPDFL。因此,如果这些变量中的任何一个具有 Y,那么 MPDFL 应该具有 Y,否则为 N。
data <- data.frame(ID=c(1,2,3,4,5,6),MPD1FL=c('N','Y','N','N'),MPD2FL=c('Y',MPD3FL=c('N','Y'))
ID MPD1FL MPD2FL MPD3FL
<dbl> <fct> <fct> <fct>
1 N Y N
2 Y N N
3 Y N N
4 N Y Y
5 N N N
6 N N Y
val <- c('MPD1FL','MPD2FL','MPD3FL')
for (val in val) {
data2 <- data %>% mutate(MPDFL=if_else(val=='Y','N'))
}
data2
谢谢,
锯齿
解决方法
这是一个基本的 R 解决方案。
data2 <- data
data2$MPDFL <- c("N","Y")[(rowSums(data[-1] == "Y") > 0L) + 1L]
data2
# ID MPD1FL MPD2FL MPD3FL MPDFL
#1 1 N Y N Y
#2 2 Y N N Y
#3 3 Y N N Y
#4 4 N Y Y Y
#5 5 N N N N
#6 6 N N Y Y
,
attach(data)
library(dplyr)
data$MPDFL<-case_when(data$MPD1FL=='Y'|data$MPD2FL=='Y'|data$MPD3FL=='Y'~'Y',TRUE~'N')
,
您也可以使用 Number Occurrence
0 54
1 40
2 45
3 57
4 47
5 50
6 59
7 50
8 47
9 51
[54,40,45,57,47,50,59,51]
The occurrence of 2's is 45
循环来执行此操作,尽管这肯定比其他已发布的答案效率低:
for
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。