【问题标题】:Importing and transforming txt file into a csv using R or Excel使用 R 或 Excel 将 txt 文件导入和转换为 csv
【发布时间】:2022-06-16 02:35:55
【问题描述】:

除了非常基本的转换之外,我在转换 txt 数据方面几乎没有经验,我已经尝试了大约一个小时来使用 Excel 电源查询和 R 中的 Tidyverse。

我有一个如下格式的txt文件,下面的例子显示了三个植被调查地块的数据,虽然我的实际数据超过了1600个地块:

Plot 1
CVS: class 49
ELL: No data for 2 species: Betula seedling/sp; Quercus seedling/sp
ELL: Light 5.6; Wetness 5.5; pH 3.9; Fertility 4.2
CSR: 2 species with no data: Betula seedling/sp; Pinus sylvestris
CSR: C: 2.89  S: 2.35  R: 2.33
BIO: 2 species with no data: Betula seedling/sp; Quercus seedling/sp
BIO: Eurasian Boreal-montane 14%
BIO: Eurosiberian Boreo-temperate 14%
BIO: Oceanic Temperate 14%
BIO: European Temperate 14%
BIO: Eurosiberian Temperate 14%
BIO: Circumpolar Temperate 14%
BIO: European Southern-temperate 14%

Plot 2
CVS: class 42
ELL: No data for 2 species: Betula seedling/sp; Quercus seedling/sp
ELL: Light 5.2; Wetness 5.2; pH 4.9; Fertility 5.4
CSR: 2 species with no data: Betula seedling/sp; Tilia [spp]
CSR: C: 2.36  S: 2.79  R: 2.75
BIO: 3 species with no data: Betula seedling/sp; Quercus seedling/sp; Tilia [spp]
BIO: Oceanic Temperate 25%
BIO: European Temperate 50%
BIO: Eurosiberian Temperate 25%

Plot 3
CVS: class 42
ELL: No data for 1 species: Quercus seedling/sp
ELL: Light 4.9; Wetness 5.2; pH 5.9; Fertility 5.5
CSR: C: 2.74  S: 3.25  R: 2.49
BIO: 2 species with no data: Acer pseudoplatanus; Quercus seedling/sp
BIO: Circumpolar Wide-boreal 11%
BIO: Circumpolar Boreo-temperate 11%
BIO: Eurosiberian Wide-temperate 11%
BIO: European Temperate 22%
BIO: Eurosiberian Temperate 11%
BIO: Circumpolar Temperate 11%
BIO: European Southern-temperate 22%

我实际上不需要保留太多这些数据,我需要保留和转换前两行以及第 5/6 行(CSR)中的信息,我需要的是以下格式的表格:

PLOT    CVS      C      S      R
 1       49      2.89   2.35   2.33
 2       42      2.36   2.79   2.75
 3       42      2.74   3.25   2.49  

这甚至可以从现有的 txt 格式中做到吗?可悲的是,我对这个问题一无所知,而且谷歌搜索似乎也无济于事。非常感谢所有想法。

【问题讨论】:

  • 如果您将上面的structure(...) 复制为数据,dput(some_tidyr_object) 会是什么样子?

标签: r excel transformation txt


【解决方案1】:

可以将“Plot n”行始终放在第一位,将 CVS: class nn" 行放在第二位,以及 CSR: C:嗯……等等。” 总是排在第六位

因为在这种情况下,我认为我有一些 Excel 公式可以帮助您获得此结果:

My result

公式如下(从 B6 单元格开始):

B 栏: =CLEAN(IF(ISNUMBER(SEARCH("Plot";A1));MID(A1;6;10);""))

C 列: =CLEAN(IF(ISNUMBER(SEARCH("CVS: 类 ";A2));MID(A2;12;10);""))

D 列: =CLEAN(IF(ISNUMBER(SEARCH("CSR: C:";A2));MID(A6;9;5);""))

E 栏: =CLEAN(IF(ISNUMBER(SEARCH("CSR: C:";A2));MID(A6;18;5);""))

F 栏: =CLEAN(IF(ISNUMBER(SEARCH("CSR: C:";A2));MID(A6;27;5);""))

如图所示,当txt中少一行时,excel中的数据显示不完美。这就是我最初的问题。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多