在R中使用"不等"导入选项卡分隔的文本数据标签数量

时间:2015-09-06 10:34:10

标签: r

我需要将标签分隔文本文件中的数据导入R.问题是每条记录中数据文件中的标签数量不同。数据如下所示(注意:" - >"表示标签,{LF}表示行尾(换行) - 注意每个记录中标签的数量不同,变量不同places - 标题行只有7个变量,但是记录3的值为D13到D21,即9个值:

V1 -> V2 -> V3 -> V4 -> V5-> V6 -> V7 {LF}
D1 -> D2 -> D3 -> D4 -> D5-> D6 -> {LF}
D7 -> D8 -> D9 -> D10 -> -> D12 {LF}
D13 -> D14 -> D15 -> D16 -> D17-> D18 -> D19 -> D20 -> D21 {LF}

我如何读取它以便我得到这样的东西(记住,最大数量的变量是9,而不是7,如标题行中所示):

V1 -> V2 -> V3 -> V4 -> V5-> V6 -> V7 -> V8 -> V9 {LF}
D1 -> D2 -> D3 -> D4 -> D5-> D6 ->    -> NA -> NA {LF}
D7 -> D8 -> D9 -> D10 ->  -> D12 ->NA -> NA -> NA {LF}
D13 -> D14 -> D15 -> D16 -> D17-> D18 -> D19 -> D20 -> D21 {LF}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您是说您的数据本身包含标题行V1到V9。如果是,则跳过该行并让R生成其自己的列向量,并且稍后可以单独提供长度为9的列向量。

要读取不等长的行,请使用类似这样的内容。让我们假设数据以给定的形式存储在data.txt中

数据:

D1  D2  D3  D4  D5  D6
D7  D8  D9  D10     D12
D13 D14 D15 D16 D17 D18 D19 D20 D21

RSCRIPT:

data<-read.table("data.txt",sep = "\t",fill = TRUE)

这&#34;填充&#34; param将填充缺失的值,并将输出为:

输出:

   V1  V2  V3  V4  V5  V6  V7  V8  V9
1  D1  D2  D3  D4  D5  D6            
2  D7  D8  D9 D10     D12            
3 D13 D14 D15 D16 D17 D18 D19 D20 D21

了解如何自动生成标题向量。

如果您的数据不必要地包含行向量,则使用&#34跳过它;跳过&#34; PARAM。

让我们说:

数据:

V1  V2  V3  V4  V5  V6  V7
D1  D2  D3  D4  D5  D6
D7  D8  D9  D10     D12
D13 D14 D15 D16 D17 D18 D19 D20 D21

RScript:

data<-read.table("data.txt",sep = "\t",fill = TRUE,skip = 1)

输出与上述相同。

您可以稍后根据需要添加列矢量。

例如您希望列名称为:

"C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9"

做这样的事情:

custom_colnames<-c("C1","C2","C3","C4","C5","C6","C7","C8","C9")
colnames(data)<-custom_colnames