如何在下面的資料庫中為數字 0 交換空單元格。我知道可以這樣做:df1[df1==""]<-0,在這種情況下,它會檢查我資料庫中的所有列,但是我希望從列中檢查它DR01。我想到了這樣的事情:
df1 %>% select(starts_with("DR0")=="")<-0,但沒有用。
df1 <- structure(
list(Date = c("30-06-2021","01-07-2021","02-07-2021","03-07-2021"),
DR1 = c(4,1,4,1),
DR01 = c(4,1,4,2), DR02= c(4,2,6,2),DR03= c(9,5,4,2),
DR04 = c(5,4,3,3),DR05 = c(5,4,5,""),
DR06 = c(2,4,3,""),DR07 = c(2,5,4,""),
DR08 = c(0,0,0,""),DR09 = c(0,0,0,""),DR010 = c(0,0,0,""),DR011 = c(4,0,0,""),
DR012 = c(0,0,0,""), DR013 = c(0,0,1,""), DR014 = c(0,0,0,"")),
class = "data.frame", row.names = c(NA, -4L))
> df1
Date DR1 DR01 DR02 DR03 DR04 DR05 DR06 DR07 DR08 DR09 DR010 DR011 DR012 DR013 DR014
1 30-06-2021 4 4 4 9 5 5 2 2 0 0 0 4 0 0 0
2 01-07-2021 1 1 2 5 4 4 4 5 0 0 0 0 0 0 0
3 02-07-2021 4 4 6 4 3 5 3 4 0 0 0 0 0 1 0
4 03-07-2021 1 2 2 2 3
> class(df1)
[1] "tbl_df" "tbl" "data.frame"
uj5u.com熱心網友回復:
基本解決方案:
df = structure(
list(Date = c("30-06-2021","01-07-2021","02-07-2021","03-07-2021"),
DR1 = c(4,1,4,1),
DR01 = c(4,1,4,2), DR02= c(4,2,6,2),DR03= c(9,5,4,2),
DR04 = c(5,4,3,3),DR05 = c(5,4,5,""),
DR06 = c(2,4,3,""),DR07 = c(2,5,4,""),
DR08 = c(0,0,0,""),DR09 = c(0,0,0,""),DR010 = c(0,0,0,""),DR011 = c(4,0,0,""),
DR012 = c(0,0,0,""), DR013 = c(0,0,1,""), DR014 = c(0,0,0,"")),
class = "data.frame", row.names = c(NA, -4L))
# Select columns that will be modified
# save into variable, because we will use it a few times
selection = startsWith(names(df), "DR0")
df[selection][df[selection] == ""] = 0
uj5u.com熱心網友回復:
另一種解決方案:
df1[,-(1:2)][df1[,-(1:2)]==""] <- 0
uj5u.com熱心網友回復:
在dplyr你可以使用across-
library(dplyr)
df1 %>% mutate(across(starts_with('DR0'), ~replace(., . == '', 0)))
# Date DR1 DR01 DR02 DR03 DR04 DR05 DR06 DR07 DR08 DR09 DR010 DR011 DR012 DR013 DR014
#1 30-06-2021 4 4 4 9 5 5 2 2 0 0 0 4 0 0 0
#2 01-07-2021 1 1 2 5 4 4 4 5 0 0 0 0 0 0 0
#3 02-07-2021 4 4 6 4 3 5 3 4 0 0 0 0 0 1 0
#4 03-07-2021 1 2 2 2 3 0 0 0 0 0 0 0 0 0 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328720.html
標籤:r
上一篇:價格百分比變化的R函式
