读入满足 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_name
、l_name
、hours_worked
和 code
。如果你的数据框名称不同,只需替换上面代码中的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 的版本”?