Читайте в таблице, которая отвечает определенным требованиям в R - PullRequest
0 голосов
/ 25 июня 2018

Я читаю данные из файла .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 голосов
/ 25 июня 2018

Вы можете попробовать

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, вы можете использовать table1$cols_g, назначенный что-либо из этих 3 методов вместо cols_g.

0 голосов
/ 25 июня 2018

Если есть тысячи или десятки тысяч записей (возможно, не для миллионов), вы должны просто иметь возможность фильтровать после того, как прочитали все данные:

> 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, как в примере, приведенном ниже: Как мне читать только строки, которые удовлетворяют условию из CSV в R?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...