我需要将标签分隔文本文件中的数据导入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}
感谢您的帮助。
答案 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