2017-09-17 6 views
4

Ich habe einen Excel-Datensatz importiert und fast alle Spalten (größer als 90) auf numerisch festgelegt, wenn sie anfänglich Zeichen sind. Was ist der beste Weg, um dies zu erreichen, da das Importieren und Ändern von einzelnen Stück für Stück nicht der effizienteste ist?Massenverändernde Spalten eines Datensatzes zu numerischen

+1

Möchten Sie dies in Excel tun oder Sie haben die Datei nach Code importiert und möchten die Änderung in Ihrem Code vornehmen? – STF

+0

Mein Fehler, ich hätte angeben sollen, dass dies für R war. Ich versuche ein Excel-Dataset zu importieren, aber es wird nicht als numerisch kommen und die stringsAsFactor = FALSE scheint nicht zu funktionieren. –

+3

Sie können 'sapply (foo.df," as.numeric ")' verwenden, um Variablen in numerische Form zu konvertieren. –

Antwort

0

Dies sollte tun, wie Sie wollen:

# Random data frame for illustration (100 columns wide) 
df <- data.frame(replicate(100,sample(0:1,1000,rep=TRUE))) 

# Check column names/return column number (just encase you wanted to check) 
colnames(df) 

# Specify columns 
cols <- c(1:length(df)) # length(df) is useful as if you ever add more columns at later date 

# Or if only want to specify specific column numbers: 
# cols <- c(1:100) 

#With help of magrittr pipe function change all to numeric 
library(magrittr) 
df[,cols] %<>% lapply(function(x) as.numeric(as.character(x))) 

# Check our columns are numeric 
str(df) 
0

Vorausgesetzt, dass Ihre Daten sind bereits mit allen Zeichenspalten importiert haben, können Sie die entsprechenden Spalten konvertieren mit mutate_at von Position oder Namen Numerisch:

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 
Verwandte Themen