[英]How to achieve a large tibble divided by a column within using transmute_if / transmute_at
[英]Using transmute_at with integer column in data frame
我可以將 transmute_at 應用於transmute_at
中的一列整數,而不會出錯?
除了提前將該特定列更改為雙精度之外,還有其他選擇嗎?
成功申請的MWE:
df <- data.frame("date" = seq.POSIXt(as.POSIXct(format(Sys.time(),"%F %T"),tz="UTC"),length.out=20,by="min"), "a.1" = as.double(seq(1,40,2)), "a.2" = rnorm(20,1,2), "b.1"= rnorm(20,1,4), "b.2"= rnorm(20,3,4))
df %>%
transmute_at(vars(matches('a.1|a.2')), ~ case_when(. < 1.5 ~ NA_real_,
TRUE~ .)) %>%
rename_at(vars(matches('a.1|a.2')), function(x) paste0(x,".clean")) %>% ## rename the clean Bs columns
bind_cols(df[,grep("b.|date",names(df))], .) -> df.2 ##bind cols to df with clean and dirty columns
申請失敗的 MWE
df <- data.frame("date" = seq.POSIXt(as.POSIXct(format(Sys.time(),"%F %T"),tz="UTC"),length.out=20,by="min"), "a.1" = as.integer(seq(1,40,2)), "a.2" = rnorm(20,1,2), "b.1"= rnorm(20,1,4), "b.2"= rnorm(20,3,4))
df %>%
transmute_at(vars(matches('a.1|a.2')), ~ case_when(. < 1.5 ~ NA_real_,
TRUE~ .)) %>%
rename_at(vars(matches('a.1|a.2')), function(x) paste0(x,".clean")) %>% ## rename the clean Bs columns
bind_cols(df[,grep("b.|date",names(df))], .) -> df.2 ##bind cols to df with clean and dirty columns
任何幫助表示贊賞,謝謝,
亞歷克斯
這是一種選擇,我們通過與列的元素之一相乘來將NA
強制為正確的類型
library(dplyr)
df %>%
transmute_at(vars(matches('^a\\.[1-2]$')),
list(clean = ~case_when(. < 1.5 ~ NA *.[1],
TRUE~ .)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.