簡體   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