【问题标题】:How to skip second line is csv file while maintaining first line as column names with read_csv? [duplicate]如何跳过第二行是 csv 文件,同时使用 read_csv 将第一行保持为列名? [复制]
【发布时间】:2017-09-27 01:26:30
【问题描述】:

Qualtrics 生成 csv 文件,第一行包含变量名称,第二行包含变量标签。我想使用 read_csv() 读取我的数据,同时将第一行作为列名读取,然后跳过下一行变量标签。以下是我失败的尝试。

library(readr)
mydata <- read_csv("qualtrics_data.csv", col_names = TRUE, skip = 2) # this would actually skip both the names and label rows. 

【问题讨论】:

标签: r csv qualtrics readr


【解决方案1】:

您可以只读取两次 - 一次获取名称,然后获取数据。

library(readr)
library(dplyr)

csv_file <- "mpg,cyl,disp,hp,drat,wt
mpg,cyl,disp,hp,drat,wt
21.0,6,160,110,3.90,2.875
22.8,4,108,93,3.85,2.320
21.4,6,258,110,3.08,3.215
18.7,8,360,175,3.15,3.440
18.1,6,225,105,2.76,3.460"


df_names <- read_csv(csv_file, n_max = 0) %>% names()

df_names
#> [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"

df <- read_csv(csv_file, col_names = df_names, skip = 2)

df

#> # A tibble: 5 x 6
#>     mpg   cyl  disp    hp  drat    wt
#>   <dbl> <int> <int> <int> <dbl> <dbl>
#> 1  21.0     6   160   110  3.90 2.875
#> 2  22.8     4   108    93  3.85 2.320
#> 3  21.4     6   258   110  3.08 3.215
#> 4  18.7     8   360   175  3.15 3.440
#> 5  18.1     6   225   105  2.76 3.460

【讨论】:

    【解决方案2】:

    使用read.csv 例如:

    df <- read.csv("example.csv")
    df <- df[-1,] # -1 removes the first row, you can change to -2 to remove 2nd row...etc
    

    【讨论】:

    • 由于第二行包含标签,这样做会导致所有列都被解析为字符变量
    猜你喜欢
    • 2012-07-14
    • 2015-01-09
    • 2015-09-18
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2019-05-07
    相关资源
    最近更新 更多