读入满足 R 中特定要求的表

Posted

技术标签:

【中文标题】读入满足 R 中特定要求的表【英文标题】:Read in a table that meets specific requirements in R 【发布时间】:2018-12-04 07:13:41 【问题描述】:

我正在从包含数千条记录的 .txt 文件中读取数据

table1 <- read.table("teamwork.txt", sep ="|", fill = TRUE)

看起来像:

f_name  l_name hours_worked  code

Jim      Baker    8.5        T
Richard  Copton  4.5         M
Tina     Bar     10          S

但是我只想读入具有“S”或“M”代码的数据:

我尝试连接列:

newdata <- subset(table1, code = 'S' |'M')

但是我得到了这个问题:

只能对数字、逻辑或复杂类型进行操作

【问题讨论】:

您的语法不正确。该错误来自使用= 而不是==。试试subset(table1, code == 'S' | code == 'M') 【参考方案1】:

如果有数千或数万条记录(可能不是数百万条),您应该在读入所有数据后才能过滤:

> library(tidyverse)
> df %>% filter(code=="S"|code=="M")
# A tibble: 2 x 4
  f_name  l_name hours_worked code 
  <fct>   <fct>         <dbl> <fct>
1 Richard Copton         4.50 M    
2 Tina    Bar           10.0  S    

如果您真的只想拉入符合您条件的行,请尝试sqldf 包,例如:How do i read only lines that fulfil a condition from a csv into R?

【讨论】:

它给了我Error in filter_impl(.data, quo) : Evaluation error: object 'code' not found. 错误,请问有什么想法吗? 我将您包含在问题中的数据加载为名为 df 的数据框,其中包含四个变量:f_namel_namehours_workedcode。如果你的数据框名称不同,只需替换上面代码中的df即可;同样,如果您的变量名与code 不同,则必须使用您的变量名。【参考方案2】:

你可以试试

cols_g <- table1[which(table1$code == "S" | table1$code == "M",]

cols_g <- subset(table1, code=="S" | code=="M")

library(dplyr)
cols_g <- table1 %>% filter(code=="S" | code=="M")

如果您想在table1 上添加列cols_g,您可以使用table1$cols_g 从这3 种方法中分配任何内容,而不是cols_g

【讨论】:

以上是关于读入满足 R 中特定要求的表的主要内容,如果未能解决你的问题,请参考以下文章

pip install -r 要求到 Colab 中的特定目录

为啥运行“pip install -r requirements.txt”时出现错误“找不到满足要求 scipy==1.5.3 的版本”?

Java-POJ1010-STAMP

LeetCode数组-5(566)-按照要求输出矩阵

具有一些特定要求的 .NET 中的录音

MySQL 8 InnoDB 集群生产部署