R:删除行不会向上移动某些 .csv 的数据,但会为 .xls 文件移动数据

R: Deleting Row doesn't shift data up for certain .csv but does for .xls file

我有兴趣查看几个州在 4 年内的 GDP。导入 .csv 文件后,我重命名了列名,然后删除了不相关的行。结果是数据在编号时跳过第 10 行。所以它从 1 到 9,然后从 11 开始。

当我尝试使用从 .xls 文件导入的类似数据框进行此操作时,数据在编号时不会跳过第 10 行。

gdp<-read.csv("GDP_per.csv",skip = 4)
gdp<-gdp%>%
  rename(
    "2014" = X2013.2014,
    "2015" = X2014.2015,
    "2016" = X2015.2016,
    "2017" = X2016.2017,
    "2018" = X2017.2018
  )
gdp<-gdp[c(-(10),-(53:64)),]


gdp2<-read_excel("GDP_dol.xls", skip = 5)
gdp2<-gdp2[,c(2,20:24)]
gdp2<-gdp2[c(-(10),-(53:64)),]

9 特拉华州 10.7 5.5 -0.7 2.5 3.9

11 佛罗里达 4.9 6.5 5.0 4.4 5.8

对比

9 特拉华州 67178.9 70896.2 70379.8 72167.2 74973.3

10 佛罗里达 839706.0 894044.0 938370.3 979464.6 1036323.2

read.csv函数returns一个data.frame而read_excelreturns一个tibble。它们不相同,并且不一定以相同的方式运行。数据框保留原始行名称,直到您更改它们,例如

(x <- data.frame(V1=1:10, V2=11:20))
(x2 <- x[-5, ])                # Row name 5 is missing
rownames(x2) <- NULL
x2                             # Row names 1 - 9

小标题自动重新编号行:

library(tidyr)
xt <- tibble(x)
(xt[-5, ])

我建议您使用 readr 包中的 read_csv() 函数,该函数将其作为 tibble 导入,从而导致相同的行为。