簡體   English   中英

填充 R data.frame 中每一行中的缺失元素

[英]fill missing elements in each row in a R data.frame

我有一個 csv 文件作為 data.frame 導入,問題是每行必須有 4 個元素(4 列),其中一些可能有不同數量的元素,我的意思是:

ID  col1 col2 col3 col4
id1  dA  dB    dC   dD
id2  aA  aB    aC   aD
id3  mA  mB    mC
id4  xA  xB    xC   XD

我正在使用 tidyr,當我導入數據時,它會用 NA 填充每個缺失的元素,在本例中是 col4 處的 id3。

id3  mA  mB    mC NA

我想修復每行中少於 4 個元素的所有行(如 id3),只是在缺少的元素中添加一個未分類的(UNC),例如:

ID  col1 col2 col3 col4
id1  dA  dB    dC   dD
id2  aA  aB    aC   aD
id3  mA  mB    mC  UNC
id4  xA  xB    xC   XD

好吧,這是我的代碼:

df <- read.csv("file.csv", comment.char = "#", header = TRUE, sep = "\t")

#add the id as row name:
rownames(df) <- paste("id", 1:nrow(df), sep = "")

# eliminate some elements of the data frame 
df[, 2:ncol(df)] <- NULL

# add a name of each column and split elements based in ";" character 
#at this point the "df" has a single column named "old_name":

df <- df %>% tidyr::separate(old_name, c("col1", "col2", "col3", "col4"), sep = ";", extra="drop")

任何建議!

非常感謝

我們可以用

library(dplyr)
df1 %>%
    mutate_if(is.character, ~ replace(., is.na(.), "UNC"))

或在base R

i1 <- sapply(df1, is.character)
df1[i1][is.na(df1[i1])] <- "UNC"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM