繁体   English   中英

如何将使用缩进标记观察的 txt 文件加载到 R

[英]How to load txt file that used indentations to mark observations into R

我正在按县对数据进行分析,并且我想将变量与相邻县的数据一起包含在内。 在此之前,我需要一个列出每个县的相邻县的文件。

从人口普查来看,我有这样一个txt文件,但格式是……独一无二的。 虽然列是制表符分隔的,但每个新的源县都用缩进标记。

例子:

"Autauga County, AL"    01001   "Autauga County, AL"    01001
        "Chilton County, AL"    01021
        "Dallas County, AL" 01047
        "Elmore County, AL" 01051
        "Lowndes County, AL"    01085
        "Montgomery County, AL" 01101
"Baldwin County, AL"    01003   "Baldwin County, AL"    01003
        "Clarke County, AL" 01025
        "Escambia County, AL"   01053
        "Mobile County, AL" 01097
        "Monroe County, AL" 01099
        "Washington County, AL" 01129
        "Escambia County, FL"   12033  

我不知道如何加载。而且我的研究区域中有太多县无法手动加载。

非常感谢任何帮助!

对于制表符分隔的文件,字段分隔符为\t

df <- read.csv(file = ".../countries.txt", sep = "\t")

不太明白:

每个新的来源县都用缩进标记

如果您真的是指在每个新行之前累积制表位 - 就像这样,在您使用read.csv()完全按照上面提到的方式读取数据之后:

                  V1                 V2                 V3   V4
1 Autauga County, AL              01001                      NA
2                    Autauga County, AL              01001   NA
3                                       Chilton County, AL 1021

您可以尝试以下内容 - 在您的数据中没有列名的条件下编写,如您的示例中所示:

res <- data.frame()
for (i in 1:nrow(countries)) {
  new <- countries[i, c(i, i+1)]
  colnames(new) <- NA
  res <- rbind(res, new)
}

这应该给你:

                  NA    NA
1 Autauga County, AL 01001
2 Autauga County, AL 01001
3 Chilton County, AL  1021
...

你能告诉我们 output 可能是什么样子吗? 缩进的行是否服从于未缩进的行? 您是否期待 output 例如“Autauga County”将在第一列中,然后所有缩进的将在一行中以“Autauga County”作为父项? 因此,需要更多信息来了解您的期望。 如果我们知道 output 的样子,读取数据就不难了。

如果您 go 到描述文件布局的页面 - County Adjacency File Record Layout - 它指定文件是制表符分隔的。 所以你可以只使用read_tsv 您还可以使用fill来获取与所有相邻县相关联的每个主要县。

    library(tidyverse)

    read_tsv("county_adjacency.txt", col_names = c("county", "geoid", "adj_county", "adj_geoid")) %>% 
       fill(county:geoid, .direction = "down")

结果:

  county             geoid adj_county            adj_geoid
   <chr>              <chr> <chr>                 <chr>    
 1 Autauga County, AL 01001 Autauga County, AL    01001    
 2 Autauga County, AL 01001 Chilton County, AL    01021    
 3 Autauga County, AL 01001 Dallas County, AL     01047    
 4 Autauga County, AL 01001 Elmore County, AL     01051    
 5 Autauga County, AL 01001 Lowndes County, AL    01085    
 6 Autauga County, AL 01001 Montgomery County, AL 01101    
 7 Baldwin County, AL 01003 Baldwin County, AL    01003    
 8 Baldwin County, AL 01003 Clarke County, AL     01025    
 9 Baldwin County, AL 01003 Escambia County, AL   01053    
10 Baldwin County, AL 01003 Mobile County, AL     01097   
# … with 22,190 more rows

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM