如何将文本文件转换并存储到csv

时间:2017-07-14 12:33:21

标签: r csv

Intersects

我有上面的文字文件。

如何存储CSV文件,列分隔?

我有加载文件,但很难从文件中删除空格。

2 个答案:

答案 0 :(得分:1)

可能有更优雅的方式,但这就是诀窍:

# read raw file in lines
file_raw <- readLines('file.txt') 

# remove whitespace
file_trim <- trimws(file_raw,which = 'both')

# remove empty lines
file_trim <- file_trim[file_trim != '']

# sub white space with separator ,
file_csv <- gsub('\\s{2,}',',',file_trim)

最后还会有一些事情,例如--分隔符和20 rows selected.,但如果您愿意,可以在写作之前或阅读之后轻松过滤掉:

file_clean <- file_csv[!grepl('(-){3,}|rows selected',file_csv)]

write.csv(file_clean,'file_cleaned.csv')




      > read.csv('file_cleaned.csv')
    X                                x
1   1                        13-JUL-17
2   2     Bank User,Space Occupied(GB)
3   3             CKYC_MNSB,.004211426
4   4     CORE_AMARNATH_ASP,8.75262451
5   5           CORE_AMBUJA,6.80389404
6   6       CORE_AMBUJA_ASP,10.0085449
7   7   CORE_ANAND_MERC_ASP,18.9866333
8   8          CORE_BALOTRA,17.8280029
9   9           CORE_BASODA,4.55432129
10 10       CORE_CHHAPI_ASP,11.9767456
11 11    CORE_DHANGDHRA_ASP,13.1849976
12 12         CORE_IDAR_ASP,13.3209229
13 13  CORE_JANTA_HALOL_ASP,12.7955933
14 14     Bank User,Space Occupied(GB)
15 15 CORE_JHALOD_URBAN_ASP,9.19219971
16 16        CORE_MANINAGAR,5.36090088
17 17    CORE_MANINAGAR_ASP,6.31414795
18 18         CORE_SANKHEDA,20.4329834
19 19   CORE_SMCB_ANAND_ASP,11.3191528
20 20      CORE_TARAPUR_ASP,8.24627686
21 21             CORE_VUCB,.000610352
22 22              TBA_TEMP,5.39910889
23 23            TEST_DUNIA,4.15698242
24 24 TABLESPACE NAME,Free Space in GB
25 25               TBAPROJ,33.2736816

答案 1 :(得分:1)

您想要的每一行都匹配由大写字母和下划线组成的单词的模式,然后是空格,然后是一个小数点的数字。所以这个grep会过滤掉那些:

> file_raw <- readLines('file.txt') 
> read.table(
    text=paste(
      file_raw[
        grep("^[A-Z_].*\\s*\\.",file_raw)
        ],
        collapse="\n"),
     sep="",head=FALSE)
                      V1           V2
1              CKYC_MNSB  0.004211426
2      CORE_AMARNATH_ASP  8.752624510
3            CORE_AMBUJA  6.803894040
4        CORE_AMBUJA_ASP 10.008544900
5    CORE_ANAND_MERC_ASP 18.986633300
6           CORE_BALOTRA 17.828002900
7            CORE_BASODA  4.554321290
8        CORE_CHHAPI_ASP 11.976745600
9     CORE_DHANGDHRA_ASP 13.184997600
10         CORE_IDAR_ASP 13.320922900
11  CORE_JANTA_HALOL_ASP 12.795593300
12 CORE_JHALOD_URBAN_ASP  9.192199710
13        CORE_MANINAGAR  5.360900880
14    CORE_MANINAGAR_ASP  6.314147950
15         CORE_SANKHEDA 20.432983400
16   CORE_SMCB_ANAND_ASP 11.319152800
17      CORE_TARAPUR_ASP  8.246276860
18             CORE_VUCB  0.000610352
19              TBA_TEMP  5.399108890
20            TEST_DUNIA  4.156982420
21               TBAPROJ 33.273681600

请注意,如果您希望任何第一个令牌与该模式匹配,例如CORE_999lower_case,则需要调整模式。但是如果没有正式的规范,我们只能继续你提供的东西。