我需要清理一个数据框:
Sample Name` Marker `Allele 1` `Allele 2` `Allele 3` `Allele 4`
<int> <chr> <int> <int> <int> <int>
1 2 D13 NA 118 136 NA
2 3 D13 NA 118 NA 136
3 4 D13 118 NA NA 136
4 5 D13 NA NA NA NA
5 6 D13 NA NA NA NA
所有Allele列的值应该被推到左边:
Sample Name` Marker `Allele 1` `Allele 2` `Allele 3` `Allele 4`
<int> <chr> <int> <int> <int> <int>
1 2 D13 118 136 NA NA
2 3 D13 118 136 NA NA
3 4 D13 118 136 NA NA
4 5 D13 NA NA NA NA
5 6 D13 NA NA NA NA
我正在尝试使用此功能,但我不确定如何将新向量附加到df:
apply(dff[3:6], 1, function(x)
x <-x[!is.na(x)]
)
数据:
structure(list(`Sample Name` = 2:6, Marker = c("D13", "D13",
"D13", "D13", "D13"), `Allele 1` = c(NA, NA, 118L, NA, NA), `Allele 2` = c(118L,
118L, NA, NA, NA), `Allele 3` = c(136L, NA, NA, NA, NA), `Allele 4` = c(NA,
136L, 136L, NA, NA)), .Names = c("Sample Name", "Marker", "Allele 1",
"Allele 2", "Allele 3", "Allele 4"), row.names = c(NA, -5L), class = c("tbl_df",
"tbl", "data.frame"))
答案 0 :(得分:1)
我们需要的是非NA元素和NA元素的串联
df[3:6] <- t(apply(df[3:6], 1, function(x) c(x[!is.na(x)], x[is.na(x)])))