Установка <NA> на пустой
У меня есть dataframe с строкой 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
Я назначил пустую строку (строку NA), потому что я хотел иметь некоторое пространство между строкой класса и строкой класса B.
Теперь я хотел бы подставить <NA>
пустым, так что вторая строка выглядит как пустая строка.
Я пробовал:
df[is.na(df)] <- ""
и
df[df == "NA"] <- ""
но это не сработало.
Любые идеи? Спасибо!
Ответы
Ответ 1
Другая альтернатива:
df <- sapply(df, as.character) # since your values are `factor`
df[is.na(df)] <- 0
Если вам нужны пробелы вместо нулей
> 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"
Если вам нужен файл data.frame, просто используйте as.data.drame
> 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
Ответ 2
Этот ответ является скорее расширенным комментарием.
То, что вы пытаетесь сделать, - это не то, что я считаю хорошей практикой. R не является, скажем, Excel, поэтому делать что-то подобное просто для создания визуального разделения в ваших данных, это просто даст вам головную боль позже на линии.
Если вы действительно заботитесь только о визуальном выходе, я могу предложить два предложения:
-
Используйте аргумент na.print
для print
, если вы хотите просмотреть данные с этим визуальным разделением.
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
:
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