【问题标题】:Read Non-Delimited .txt file into R将非分隔的 .txt 文件读入 R
【发布时间】:2013-09-17 13:33:05
【问题描述】:

我得到了一个二进制数据集,指示一个虚构测试的正确/错误测试答案。我要将这些数据导入 R 中,以便在课程中对其进行分析。

如果不将每行中的值更改为单个大数字,我很难将数据集导入 R。我最初的想法是缺少分隔字符会导致我出现问题。

.txt 文件的前几行如下所示:

11011111110001100000001110000010

11111100110000001010001000100000

00001011110000000000000010001000

11110101000101100111000100000110

10000000100000100101000000101000

11111110001000001001000010000000

当我将这些行读入 R 时,我收到:

1.101111e+31

1.111110e+31

1.011110e+27

1.111010e+31

1.000000e+31

1.111111e+31

而不是1s和0s的行表示测试结果。

【问题讨论】:

  • 如何导入数据? readLines() 通常对我有用,将输入保持为字符而不是转换为数字。
  • 我一直在使用 read.table,我认为它导致了将行转换为单个值的问题。

标签: r import


【解决方案1】:

我猜每一行都是一个观察?例如,每一行包含一个学生 32 个答案的正确性。如果是这种情况,请尝试read.fwf

my.data <- "11011111110001100000001110000010
11111100110000001010001000100000
00001011110000000000000010001000
11110101000101100111000100000110
10000000100000100101000000101000
11111110001000001001000010000000"

test.results <- read.fwf(textConnection(my.data), widths=rep(1, 32))

test.results[1, ]
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24
# 1  1  1  0  1  1  1  1  1  1   1   0   0   0   1   1   0   0   0   0   0   0   0   1   1
# V25 V26 V27 V28 V29 V30 V31 V32
# 1   1   0   0   0   0   0   1   0

如果不是这样,您应该提供更多信息。

【讨论】:

  • read.fwf 看起来对我拥有的其他一些数据非常有帮助 - 感谢您分享这项技术。
  • @SimonO101,是的,它在工具箱的尘土飞扬的后角,尽管我知道有一些更大或更旧的数据集喜欢固定宽度格式。给我定界符或给我死亡!
【解决方案2】:

您需要指定您的数据是字符。 R 很聪明,把它当作一个数字。在read.table 中使用colClasses...

read.table( text = "11011111110001100000001110000010
11111100110000001010001000100000
00001011110000000000000010001000
11110101000101100111000100000110
10000000100000100101000000101000
11111110001000001001000010000000" , colClasses = "character" , h = FALSE )

#                                V1
#1 11011111110001100000001110000010
#2 11111100110000001010001000100000
#3 00001011110000000000000010001000
#4 11110101000101100111000100000110
#5 10000000100000100101000000101000
#6 11111110001000001001000010000000

【讨论】:

  • 非常好 - 我的大部分问题似乎源于寻找一种方法来分隔列而不是将值视为字符。
  • 如果您想在读入后轻松拆分字符,可以使用...do.call( rbind , sapply( df , strsplit , "" ) ) 假设您的data.frame 称为df。很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2014-06-12
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 2015-10-22
  • 1970-01-01
相关资源
最近更新 更多