【问题标题】:How to delete a large number of rows from a .CSV file?如何从 .CSV 文件中删除大量行?
【发布时间】:2017-04-15 01:23:19
【问题描述】:

我是 R 和 Rstudio 的新手,所以这看起来有点奇怪。

我目前正在尝试从一个非常大(大约 400.000 行)的 .CSV 文件中删除一些行,但我遇到了一些问题。

这是我想要的输出(在这个例子中,我们删除了第 6 行:

1- 当我执行时:

tablename <- tablename[c(-row1, -row2), ]

对于,假设是 7 行,它在我第一次执行时工作得很好。然后,如果我对要删除的另一行执行相同的语法。例如:

tablename <- tablename[c(-row3, -row4), ]" )

它似乎没有删除我指定的行。

2- 由于上述问题,我尝试创建一个“超级”语法,其中包含我要删除的所有行。例如:

tablename <- tablename[c(-row1, -row2, ..., -row299, -row300), ]

问题在于,它似乎(再次)什么也不做。它只是在控制台中显示一个“+”,而不是“>”。

我的最后一个选项是使用写字板中的搜索关键字选项删除 .CSV 文件中所有不需要的行,但它不可行,只要我需要 9 个小时。

【问题讨论】:

    标签: r csv


    【解决方案1】:

    根据您对您的意图的进一步讨论(在 Nick Knauer 的回复中的 cmets 中找到)复制到此处:

    我将提供一些有关该项目的信息以及我为什么这样做。 考虑“代码”列。列代码唯一地指定一个人 ( 对于同一个人,它可以超过 1 行。在这种情况下,守则 将是相同的)考虑另一列“类”。类指定一个 一个人的社会阶层。我用一个SQL命令看看是否一样 文件中的人有不同的社会阶层。我注意到的是 结果对于同一个人有多个社会等级。这 我试图在上面写的 sintax 是删除具有 每个人有不同的 SocialClasse。

    啊哈!只需告诉您的机器做出这些判断让它相应地过滤掉它们。真的很厉害!

    首先使用left_join 将该类表连接到员工数据框。 然后使用group_by(code) %&gt;% mutate(cnt_class = n_distinct(class)),您可以通过代码揭示哪些是您的班级骗子。然后使用filter,您可以最轻松地相应地处理您的骗子。

    如果您需要更精确的帮助,请发布 reproducible example tl:dr - 使用 dput 制作一个数据框,我可以复制并粘贴到我的 rstudio 中并进行修改(永远不可能使用数据图片)。

    有关帮助您提升学习曲线的更多信息,请在此处查看其他快速简便的dplyr 数据整理选项的简单菜单/细分 - https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf

    【讨论】:

      【解决方案2】:

      要删除R中的一行,你可以这样做:

      employee <- c('John Doe','Peter Gynn','Jolie Hope')
      salary <- c(21000, 23400, 26800)
      startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
      employ.data <- data.frame(employee, salary, startdate)
      
      newdf<-employ.data[-c(1,2),]
      

      那是针对特定的行,如果你想对一系列的行做,你可以这样做:(这将删除所有的行。)

      newdf<-employ.data[-c(1:3),]
      

      【讨论】:

      • 也许我没有很好地解释自己;我很抱歉。我不能使用“newdf
      • 您是否尝试过使用超级语法消除 newdf 变量?因此,不要说“row1”,而是写 1,而“row2”将是 2。您将获取行的索引而不是行名
      • 例如:TableName
      • 您是否有删除这些行的模式或原因?按模式/原因删除行可能比单独删除每一行更容易
      • 我将提供一些有关该项目的信息以及我为什么这样做。考虑“代码”列。列代码唯一地指定一个人(对于同一个人,它可以多于 1 行。在这种情况下,代码将是相同的)考虑另一列“类”。等级指定一个人的社会等级。我使用 SQL 命令查看同一个人是否在文件中具有不同的社交类。我注意到的是,同一个人的结果有几个社会阶层。我在上面尝试编写的语法是删除每个人具有不同 SocialClasse 的行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 2018-08-15
      相关资源
      最近更新 更多