如何在R

时间:2018-05-07 15:34:30

标签: r data-import

我想从一个文件中将数据导入到R中,其中一些记录被分成两部分。数据来自数据库导出,用户很可能在文本字段中输入了回车符。记录已正确集成到数据库中,因为它是以XML格式接收的。导出问题出现在CSV2格式的txt文件中恢复回车时

这是一个说明性的虚构示例

"大黄蜂&#34 ;; "秃鹰&#34 ;; "鸭子&#34 ;; "金丝雀&#34 ;; "鲤鱼&#34 ;; "鹿&#34 ;; "麂皮" " A"鸟&#34 ;; "一匹马&#34 ;; "一只狗&#34 ;; "一只母鸡&#34 ;; "一只猫&#34 ;;的""

"鱼&#34 ;; "蜜蜂"
"羊羔&#34 ;; "老鹰&#34 ;; "云雀&#34 ;; "鸵鸟&#34 ;; "一个酒吧&#34 ;; "一个伍德考克&#34 ;; "水牛"。

第二个记录是在第六个字段切断," a" 在第2行然后在第3行" fish&#34 ;; "蜜蜂"。

您是否有解决方案(手动删除回车除外)以便能够将此类数据正确导入R中。

提前谢谢! 玛丽。

1 个答案:

答案 0 :(得分:0)

可以实现使用readLinesdplyr包的解决方案。由于OP没有提供明确的规则来决定行的完整性,因此下面的解决方案假设row如果以;结尾则完成。

A) filedata.txt的内容解决方案:

library(dplyr)

df <- data.frame(fileText = readLines("filedata.txt"), stringsAsFactors = FALSE)

tidy_text <- df %>% mutate(IsComplete = grepl(";$",df$fileText)) %>%
  group_by(SameRow = cumsum(lag(IsComplete, default=1))) %>%
  summarise(fileText = paste0(trimws(fileText), collapse=" "))

<强>结果:

tidy_text$fileText
#[1] "\"a bumblebee\"; \"a buzzard\"; \"a duck\"; \"a canary\"; \"a carp\"; \"a deer\"; \"a chamois\" \"A \"bird\"; \"a horse\";"                                
#[2] "\"a dog\"; \"a hen\"; \"a cat\"; \"a\" \"fish\"; \"a bee\" \"A lamb\"; \"an eagle\"; \"a lark\"; \"an ostrich\"; \"a bar\"; \"a woodcock\"; \"a buffalo\";"

数据: 内容filedata.txt

"a bumblebee"; "a buzzard"; "a duck"; "a canary"; "a carp"; "a deer"; "a chamois" "A "bird"; "a horse";
"a dog"; "a hen"; "a cat"; "a"
"fish"; "a bee"
"A lamb"; "an eagle"; "a lark"; "an ostrich"; "a bar"; "a woodcock"; "a buffalo";

B) filedata2.txt内容的解决方案。每行/观察以extraction;

开头
df <- data.frame(fileText = readLines("filedata2.txt"), stringsAsFactors = FALSE)
tidy_text2 <- df %>% mutate(IsComplete = lead(grepl("^extraction;.*", df$fileText),
               default = TRUE)) %>%
               group_by(SameRow = cumsum(lag(IsComplete, default=1))) %>%
               summarise(fileText = paste0(trimws(fileText), collapse=" "))

结果#2:数据已在3次观察中汇总。

tidy_text2
# A tibble: 3 x 2
#    SameRow fileText                                                                                 
#      <int> <chr>                                                                                    
# 1       1 extraction;xxxx bvbbv ncnncbvbbv;fdrggggqggqhh;-276654.00;;-657321.00                    
# 2       2 extraction;fhdh bvbbv dsmfdjjf fdhhhhdf;hqshfdsjf sdkfjdfjkdkfj ;;-547743.00,-432743.00  
# 3       3 extraction;shdfgqs bvbbv dsmfdjjf fdhhhhdf;hqshfdsjf sdkfjdfjkdkfj;;-547743.00;-432743.00

数据filedata2.txt

的内容
extraction;xxxx bvbbv ncnncbvbbv;fdrggggqggqhh;-276654.00;;-657321.00
extraction;fhdh bvbbv dsmfdjjf
fdhhhhdf;hqshfdsjf sdkfjdfjkdkfj
;;-547743.00,-432743.00 
extraction;shdfgqs bvbbv dsmfdjjf fdhhhhdf;hqshfdsjf sdkfjdfjkdkfj;;-547743.00;-432743.00