gpt4 book ai didi

用 r 中的值替换数据集中的空白

转载 作者:行者123 更新时间:2023-12-04 12:37:47 26 4
gpt4 key购买 nike

道歉,因为我认为会有一个非常明显的答案,但我在网上找不到任何东西......

我经常得到非常大的数据集,其中缺失值是空白的,例如(简而言之)

#Some description of the dataset
#cover x number of lines
31 3213 313 64 63
31 3213 313 64 63
31 3213 313 64 63
31 3213 313 64 63
31 3213 313 64 63
12 178 190 865
532 31 6164 68
614 131 864 808

例如,我想用 -999 替换所有空格。如果我使用读取表这样
dat = read.table('file.txt',skip=2)

我收到错误消息
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
line 6 did not have 5 elements

我可以将文件作为数据框打开并执行
dat = data.frame('file.txt',skip=2)
is.na(rad1) = which(rad1 == '')

但我不知道它是否有效,因为我不知道如何在读取数据帧时跳过前 2 行(例如相当于“跳过”),而且我在任何地方都找不到答案。有人可以帮忙吗?

谢谢。

最佳答案

如果您知道每列的宽度,则可以使用 read.fwf
例如

> dat <- read.fwf('temp.txt', skip=2, widths=c(5,5,6,6,6))
> dat
V1 V2 V3 V4 V5
1 31 3213 313 64 63
2 31 3213 313 64 63
3 31 3213 313 64 63
4 31 3213 313 64 63
5 31 3213 313 64 63
6 12 178 NA 190 865
7 532 31 6164 68 NA
8 614 NA 131 864 808

虽然用你想要的任何值替换 NA 值很容易,但这只是一个坏主意,因为 R 有许多处理 NA 值的好方法。

例如,要取第二列的平均值,请使用:
mean(dat$V2, na.rm=TRUE)
[1] 163.4286

R 有其他功能来处理丢失的数据。例如,您可以使用 na.omit() 完全删除缺少数据的行。
> na.omit(dat)
V1 V2 V3 V4 V5
1 31 3213 313 64 63
2 31 3213 313 64 63
3 31 3213 313 64 63
4 31 3213 313 64 63
5 31 3213 313 64 63

关于用 r 中的值替换数据集中的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14497958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com