楼主: 千车麦穗
19120 10

[问答] R语言 数据框中的元素(factor)批量转为数值型(numeric) [推广有奖]

  • 5关注
  • 0粉丝

已卖:1份资源

博士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
89 个
通用积分
6.7270
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1864 点
帖子
84
精华
0
在线时间
292 小时
注册时间
2019-4-22
最后登录
2025-10-22

楼主
千车麦穗 发表于 2019-6-3 21:55:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位老师,我从网上读取了一部分数据,但是发现数据都是因子格式的,想把它们批量的转为数值型的,请问怎么弄呢?谢谢
222.png 111.png 3333.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:numeric factor Facto Eric fact

沙发
guaizijing 发表于 2019-6-4 12:44:46
试试先as.character再as.numeric

藤椅
cheetahfly 在职认证  发表于 2019-6-4 19:17:33
purrr::map(), dplyr::mutate_all(), lapply()

板凳
千车麦穗 发表于 2019-6-5 16:25:38
guaizijing 发表于 2019-6-4 12:44
试试先as.character再as.numeric
试了下,没成功,还是多谢哈

报纸
千车麦穗 发表于 2019-6-5 16:31:26
cheetahfly 发表于 2019-6-4 19:17
purrr::map(), dplyr::mutate_all(), lapply()
谢谢老师……但是,我没看懂,您能具体说说吗

地板
cheetahfly 在职认证  发表于 2019-6-5 16:51:41
lapply(df, function(x) as.numeric(as.character(x)))

7
千车麦穗 发表于 2019-6-6 08:55:03
cheetahfly 发表于 2019-6-5 16:51 ]
sapply(rawdata,class) #变量类型
lapply(rawdata
cheetahfly 发表于 2019-6-5 16:51 [url=forum.php?mod=redirect&goto=findpost&pid=59733283&ptid=7143589]
lapply(df, function(x) as.numeric(as.character(x)))


  1. library(XML)
  2. library(httr)
  3. #tables <- GET("http://www.basketball-reference.com/playoffs/")
  4. tables<-GET('https://www.usatoday.com/sports/nba/statistics/')
  5. tables <- readHTMLTable(rawToChar(tables$content))
  6. head(tables)
  7. class(tables)
  8. rawdata<-tables[[1]]
  9. sapply(rawdata,class) #变量类型
  10. lapply(rawdata[quote][size=2][color=#999999]cheetahfly 发表于 2019-6-5 16:51[/color] ]
  11. sapply(rawdata,class) #变量类型
  12. lapply(rawdata[quote][size=2][color=#999999]cheetahfly 发表于 2019-6-5 16:51[/color] [url=forum.php?mod=redirect&goto=findpost&pid=59733283&ptid=7143589][img]static/image/common/back.gif[/img][/size]
  13. lapply(df, function(x) as.numeric(as.character(x)))[/size][/quote][size=2]

  14. [/size]PTS/G`, function(x) as.numeric(as.character(x)))
  15. sapply(rawdata[quote][size=2][color=#999999]cheetahfly 发表于 2019-6-5 16:51[/color] ]
  16. sapply(rawdata,class) #变量类型
  17. lapply(rawdata[quote][size=2][color=#999999]cheetahfly 发表于 2019-6-5 16:51[/color] [url=forum.php?mod=redirect&goto=findpost&pid=59733283&ptid=7143589][img]static/image/common/back.gif[/img][/size]
  18. lapply(df, function(x) as.numeric(as.character(x)))[/size][/quote][size=2]

  19. [/size]PTS/G`,class)
复制代码

老师,按您说的,我修改了一下,可是发现变量的类型还是factor,要不麻烦您试一下,谢谢您了

8
OhGretta 发表于 2019-6-6 17:09:04
  1. var_name <- names(rawdata)
  2. var_name <- var_name[-c(2,3,5)] #第2列第3列和第5列明显不是数值型,这里变量只选择数值型
  3. rawdata <- dplyr::mutate_at(rawdata,var_name,function(x) as.numeric(as.character(x)))
  4. #然后不是数值型的列单独转换成字符型就可以了
  5. rawdata$NAME <- as.character(rawdata$NAME)
  6. rawdata$TEAM <- as.character(rawdata$TEAM)
  7. #然后第五列也可以参照上面转换成字符型或者使用lubridate包转换成时间型数据
  8. #rawdataM/G` <- as.character(rawdataM/G`)
  9. #rawdataM/G` <- lubridate::ms(rawdataM/G`)
复制代码
var_name <- names(rawdata)
var_name <- var_name[-c(2,3,5)] #第2列第3列和第5列明显不是数值型,这里变量只选择数值型
rawdata <- dplyr::mutate_at(rawdata,var_name,function(x) as.numeric(as.character(x)))
str(rawdata)
#然后不是数值型的列单独转换成字符型就可以了
rawdata$NAME <- as.character(rawdata$NAME)
rawdata$TEAM <- as.character(rawdata$TEAM)
#然后第五列也可以参照上面转换成字符型或者使用lubridate包转换成时间型数据
#rawdata$`M/G` <- as.character(rawdata$`M/G`)
#rawdata$`M/G` <- lubridate::ms(rawdata$`M/G`)

已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

9
OhGretta 发表于 2019-6-6 17:19:51
OhGretta 发表于 2019-6-6 17:09
var_name
额啊 忘了那个美元符号显示不出来 就dollars选变量这个应该懂的吧

10
nieqiang110 学生认证  发表于 2019-6-6 22:04:08
data%>%mutate_if(is.facter, as.character)%>%mutate_if(is.character, as.numeric)%T>%str->data
最好上传你的数据,不少数据是富文本格式,光看代码,不行的。
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 15:53