将数据集的列更改为数字

时间:2017-09-17 06:43:06

标签: r excel

我已经导入了一个Excel数据集,并希望在它们最初是字符时将几乎所有列(大于90)设置为数字。实现这一目标的最佳方法是什么,因为逐个导入和更改每个数字并不是最有效的方法?

2 个答案:

答案 0 :(得分:0)

假设您的数据已导入所有字符列,您可以使用mutate_at按位置或名称将相关列转换为数字:

suppressPackageStartupMessages(library(tidyverse))  

# Assume the imported excel file has 5 columns a to e
df <- tibble(a = as.character(1:3),
             b = as.character(5:7),
             c = as.character(8:10),
             d = as.character(2:4),
             e = as.character(2:4))

# select the columns by position (convert all except 'b')
df %>% mutate_at(c(1, 3:5), as.numeric)
#> # A tibble: 3 x 5
#>       a     b     c     d     e
#>   <dbl> <chr> <dbl> <dbl> <dbl>
#> 1     1     5     8     2     2
#> 2     2     6     9     3     3
#> 3     3     7    10     4     4

# or drop the columns that shouldn't be used ('b' and 'd' should stay as chr)
df %>% mutate_at(-c(2, 4), as.numeric)
#> # A tibble: 3 x 5
#>       a     b     c     d     e
#>   <dbl> <chr> <dbl> <chr> <dbl>
#> 1     1     5     8     2     2
#> 2     2     6     9     3     3
#> 3     3     7    10     4     4

# select the columns by name
df %>% mutate_at(c("a", "c", "d", "e"), as.numeric)
#> # A tibble: 3 x 5
#>       a     b     c     d     e
#>   <dbl> <chr> <dbl> <dbl> <dbl>
#> 1     1     5     8     2     2
#> 2     2     6     9     3     3
#> 3     3     7    10     4     4

答案 1 :(得分:0)

这应该按照你的意愿行事:

PersonAccount-Person Account Layout.layout
Case Account-Record List.object