首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将chr转换为numeric apply()以更新apply函数中的数字列

将chr转换为numeric apply()以更新apply函数中的数字列
EN

Stack Overflow用户
提问于 2020-03-10 05:02:08
回答 2查看 40关注 0票数 0

问题上下文:通过将chr转换为numeric来替换数据帧中的chr变量。使用一个函数将chr转换为numeric,然后在传递要转换为numeric的df_credit_status$length_of_service时应用(),并更新相同的数据框列,例如df_credit_status$length_of_service。

我定义了这个函数和apply()函数。

数据帧列字段: df_credit_status$length_of_service是chr,对于这次更新,我可能需要创建一个新字段,然后在更改数据类型后将结果移动/复制到df_credit_status$length_of_service。

代码语言:javascript
复制
fun_year <- function(length) { as.numeric(gsub("[A-Za-z]|[[:punct:]]|\\s+", "", length))}

df_credit_status$length <- apply(df_credit_status$length_of_service, FUN=fun_year)

apply()中的错误是dim(x)必须具有正的长度。

dput()包含来自df_credit_status$length_of_service的数据

代码语言:javascript
复制
"< 1 year", "2 years", "3 years", "4 years", "5 years", "6 years", "7 years", "8 years", "9 years", "10+ years"
EN

回答 2

Stack Overflow用户

发布于 2020-03-10 05:11:04

为什么需要一个apply函数呢?你可以直接使用你的函数:

代码语言:javascript
复制
df_credit_status <- data.frame(length_of_service = c("1 year", "2 years", "3 years", "4 years", "5 years", "6 years", "7 years", "8 years", "9 years", "10+ years"))

fun_year <- function(length) {as.numeric(gsub("[A-Za-z]|[[:punct:]]|\\s+", "", length))}

df_credit_status$length <- fun_year(df_credit_status$length_of_service)

df_credit_status
   length_of_service length
1             1 year      1
2            2 years      2
3            3 years      3
4            4 years      4
5            5 years      5
6            6 years      6
7            7 years      7
8            8 years      8
9            9 years      9
10         10+ years     10
票数 1
EN

Stack Overflow用户

发布于 2020-03-10 05:11:04

因为您创建的函数可以很好地处理向量,所以我们不需要使用sapply

代码语言:javascript
复制
df_credit_status$length <- fun_year(df_credit_status$lenght_of_service)

返回:

代码语言:javascript
复制
   lenght_of_service length
1           < 1 year      1
2            2 years      2
3            3 years      3
4            4 years      4
5            5 years      5
6            6 years      6
7            7 years      7
8            8 years      8
9            9 years      9
10         10+ years     10
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60608297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档