我有一個資料框,每列都有缺失值,但在不同的行。為簡單起見,讓我們看看以下資料幀(實際資料幀要復雜得多):
first_column <- c(1, 2, NA,NA)
second_column <- c(NA, NA, 4,9)
df <- data.frame(first_column, second_column)
我們得到:
first_column second_column
1 1 NA
2 2 NA
3 NA 4
4 NA 9
現在,我想在洗掉這些缺失值后重塑資料框。我想要以下內容:
first_column second_column
1 1 4
2 2 9
有沒有自動的方法(真實資料框的尺寸為 1800 x 33)?
uj5u.com熱心網友回復:
我們可能必須重新排序列值,以便NAs 在末尾,然后使用drop_na
library(dplyr)
library(tidyr)
df %>%
summarise(across(everything(), ~ .x[order(is.na(.x))])) %>%
drop_na()
-輸出
first_column second_column
1 1 4
2 2 9
如果每列中 s 的分布不均,NA并且僅當所有列在排序后的特定行處都具有 NA 時才想洗掉該行,請使用if_all/if_allinfilter
df %>%
mutate(across(everything(), ~ .x[order(is.na(.x))])) %>%
filter(if_any(everything(), complete.cases))
-輸出
first_column second_column
1 1 4
2 2 9
uj5u.com熱心網友回復:
一種可能的解決方案:
df_new = as.data.frame(lapply(df, function(x) x[!is.na(x)]))
first_column second_column
1 1 4
2 2 9
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/518651.html
標籤:r数据框楠重塑2
