簡體   English   中英

將 transmute_at 與數據框中的 integer 列一起使用

[英]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.

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