取代值(na),带有空白(空字符串)

问题描述 投票:0回答:3
我有一个带有NA行的数据框:

df = data.frame(c("classA", NA, "classB"), t(data.frame(rep("A", 5), rep(NA, 5), rep("B", 5)))) rownames(df) <- c(1,2,3) colnames(df) <- c("class", paste("Year", 1:5, sep = "")) > df class Year1 Year2 Year3 Year4 Year5 1 classA A A A A A 2 <NA> <NA> <NA> <NA> <NA> <NA> 3 classB B B B B B
I是故意引入空行(NA行),因为我想在Classa Row和ClassB行之间有一些空间。

我尝试了:

<NA>

df[is.na(df)] <- ""

但是它不起作用。接下来我可以尝试什么?

其他替代方案:
 df[df == "NA"] <- ""

如果您想要空白而不是零
r na
3个回答
53
投票

如果您想要一个data.frame,然后只需使用

> df <- sapply(df, as.character) > df[is.na(df)] <- " " > df class Year1 Year2 Year3 Year4 Year5 [1,] "classA" "A" "A" "A" "A" "A" [2,] " " " " " " " " " " " " [3,] "classB" "B" "B" "B" "B" "B"


as.data.drame


这个答案更多是一个扩展的评论。

您想做的不是我认为良好的做法。例如,r不是Excel,因此仅仅在数据中创建视觉分离的事情就会让您头疼。 

如果您真的只关心视觉输出,我可以提供两个建议:


14
投票
当您想使用该视觉分离查看数据时,将

> as.data.frame(df) class Year1 Year2 Year3 Year4 Year5 1 classA A A A A A 2 3 classB B B B B B

参数用于

na.print

print

  1. 实际,即使上述也不是最好的建议。通过将您的

    print(df, na.print = "")
    #    class Year1 Year2 Year3 Year4 Year5
    # 1 classA     A     A     A     A     A
    # 2                                     
    # 3 classB     B     B     B     B     B
    
    转换为
    data.frame

    list
  2. here是一个split(df, df$class) # $classA # class Year1 Year2 Year3 Year4 Year5 # 1 classA A A A A A # # $classB # class Year1 Year2 Year3 Year4 Year5 # 3 classB B B B B B 选项,其中所有列(所有列),其中每个列中的na值(

    dplyr
    )具有这样的空空间的Na值:
    mutate

    用Reprexv2.0.2

4
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.