阅读符合R中特定要求的表

时间:2018-06-25 16:32:09

标签: r excel dataframe

我正在从包含数千条记录的.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')

但是我遇到了这个问题:

  

仅适用于数字,逻辑或复杂类型的操作

2 个答案:

答案 0 :(得分: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?

答案 1 :(得分:0)

您可以尝试

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

OR

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

OR

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

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