我有这个数据框:
patientcA 1 2 NA NA b c
patientcB NA NA 3 4 b c
patientdA 3 3 NA NA d e
patientdB NA NA 5 6 d e
我如何将第2、3、4和5列与第1列中匹配的行(最后一个字符除外)连接在一起。在这种情况下,除了最后一个字符外,前两行匹配;最后两行也一样。所以我的预期输出将是:
patientcA 1 2 3 4 b c
patientcB 1 2 3 4 b c
patientdA 3 3 5 6 d e
patientdB 3 3 5 6 d e
我已经尝试过类似的方法,但是我不知道写什么作为else
参数。而且我认为这不是最好的方法:
new_data$first_column<-ifelse(grepl('A$', original_data$first), original_data$first, ?)
也许您可能考虑使用一种tidyverse
方法separate
将第1列的最后一个字符放入新列,并用同一患者的值fill
替换NA
。
library(tidyverse)
df %>%
separate(V1, into = c("patient", "letter"), sep = -1) %>%
group_by(patient) %>%
fill(V2:V5, .direction = "downup")
输出量
patient letter V2 V3 V4 V5 V6 V7
<chr> <chr> <int> <int> <int> <int> <chr> <chr>
1 patientc A 1 2 3 4 b c
2 patientc B 1 2 3 4 b c
3 patientd A 3 3 5 6 d e
4 patientd B 3 3 5 6 d e
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句