我想比较数据框第一行中的值是否匹配,作为回报,我想得到1表示TRUE,0表示FALSE,我只尝试在第一行工作,因为稍后我想为数据框的所有1000行编写一个for循环。
这是我正在处理的第一行。
illness_1 illness_2 illness_3 illness_4 illness_5 illness_6 illness_7
1 1065 1139 NA NA NA NA NA
illness_8 illness_9 illness_10 illness_11 illness_12 illness_13 DC1 DC2 DC3
1 NA NA NA NA NA NA 42 NA NA
DC4 DC5 DC6 DC7 DC8 DC9 DC10 DC11 DC12 DC13 DC14 DC15 DC16 DC17 DC18 DC19 DC20
1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
DC21 DC22 DC23 DC24 DC25 DC26 DC27 DC28 DC29 DC30 DC31 DC32 DC33 DC34 DC35
1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
DC36 DC37 DC38 DC39 DC40 DC41 DC42 DC43 DC44 DC45 DC46 DC47 DC48 DC49 DC50
1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
DC51 DC52 DC53 DC54 DC55 DC56 DC57 DC58 DC59 DC60 DC61 DC62 DC63 DC64 DC65
1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
DC66 DC67 DC68 DC69 DC70 DC71 DC72 DC73 DC74 DC75 DC76 DC77 DC78 DC79 DC80
1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
DC81 DC82 DC83 DC84 DC85 DC86 DC87 DC88 DC89 DC90 DC91 DC92 DC93 DC94 DC95
1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
DC96 DC97 DC98 DC99 DC100
1 NA NA NA NA NA
我试过下面的代码。
ifelse(
any(
!is.na(dplyr::select(data_set, contains("illness")))
) ==
any(
!is.na(dplyr::select(data_set, contains("DC")))
), 1, 0
)
它返回了一个1,而我期待的是一个0。
有人能帮忙吗?先谢了。
2条答案
按热度按时间kgqe7b3p1#
使用
dplyr::rowwise()
和c_across()
比较列集,在比较之前,借助purrr::discard()
删除NA
:fjaof16o2#
对于数据框
df
中的所有行,检查包含 illness 的列中的值是否与包含 DC 的列中的值相交(不包括NA
)。返回1或0。