微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

给定条件强制字符串的函数

如何解决给定条件强制字符串的函数

我只是想强制转换为数字——即,将 as.numeric 应用到——任何以 1 作为其第一个条目(即字符)的列。所以我希望转向:

tibble(a = c("1","2"),b = c("Fred","Kevin"),c = 1:2)

进入

tibble(a = 1:2,c = 1:2)

解决方法

您可以使用 dplyr

library(dplyr)

data %>% 
  mutate(across(where(~ first(.x) == "1" & !is.na(first(.x))),as.numeric)).

返回

# A tibble: 2 x 5
      a b         c     d e    
  <dbl> <chr> <dbl> <dbl> <lgl>
1     1 Fred      1     1 NA    
2     2 Kevin     2     3 NA   

数据

data <- tibble(a = c("1","2"),b = c("Fred","Kevin"),c = 1:2,d = c("1","3"),e = c(NA,NA))
,

它没有严格按照您的要求执行,但您可以使用 readr 的 guess_parserparse_guess 函数。有关详情,请参阅 https://readr.tidyverse.org/reference/parse_guess.html

在你的情况下,你可以这样做:

df %>% mutate(across(everything(),parse_guess))

这将解析所有列。或者只是解析列是否为数字:

parse_guess_numeric <- function (x){
    if (guess_parser(x,guess_integer=FALSE)=="double"){
        as.numeric(x)
    } else {
        x
    }

}

df %>% mutate(across(everything(),parse_guess_numeric))
,

有很多方法可以解决这个问题:使用 type.convert 中的 type_convertreadr

type.convert(df,as.is = TRUE)
# A tibble: 2 x 3
      a b         c
  <int> <chr> <int>
1     1 Fred      1
2     2 Kevin     2


readr::type_convert(df)

-- Column specification ---------------------------------------------------------------------
cols(
  a = col_double(),b = col_character()
)

# A tibble: 2 x 3
      a b         c
  <dbl> <chr> <int>
1     1 Fred      1
2     2 Kevin     2
,
library(tidyverse)
df <- tibble(a = c("1",d = c(NA,NA))
fltr <- names(df)[map_chr(df,guess_parser) == "double"]
mutate(df,across(all_of(fltr),as.numeric))
#> # A tibble: 2 x 4
#>       a b         c d    
#>   <dbl> <chr> <dbl> <lgl>
#> 1     1 Fred      1 NA   
#> 2     2 Kevin     2 NA

reprex package (v2.0.0) 于 2021 年 7 月 4 日创建

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?