gpt4 book ai didi

在 R 中用 NA 替换值

转载 作者:行者123 更新时间:2023-12-02 05:10:05 26 4
gpt4 key购买 nike

我有一个字符向量,如下所示:

"Internet" "Internet" "-1"       "-5"       "Internet" "Internet" 

我想替换所有负数值的值(-1、-5 等)使用 NA

我用这段代码做到了:

hintsData$WhereSeekHealthInfo[hintsData$WhereSeekHealthInfo < 0] <- NA

这似乎有效:

head(hintsData$WhereSeekHealthInfo)
# [1] "Internet" "Internet" NA NA "Internet" "Internet"

但是当我这样做的时候

> sum(hintsData$WhereSeekHealthInfo == "Internet")
# [1] NA

基本上我不能再对这些值求和了,因为我以某种方式改变了矢量?

在运行 NA 代码之前,我能够运行代码并得到这个:

> sum(hintsData$WhereSeekHealthInfo == "Internet")
# [1] 1691

那么,我怎样才能用 NA 替换“-1”、“-5”等值,但仍然得到:

> sum(hintsData$WhereSeekHealthInfo == "Internet")
# [1] 1691

如果您有想法,请告诉我。我确实发现了有关用 NA 替换的其他问题,但我不知道为什么一旦用 NA 替换我就不能再计算值了,我不确定要搜索或排除什么。

最佳答案

sum有一个 na.rm参数,将其设置为 TRUE , 你将删除 NA . (通常为 1+NA = NA ,因此您要删除 NA 值)

话虽这么说,您的 <0 有点偷偷摸摸假设你的向量是字符的条件(在这种情况下它确实有效,但我不想假设它是健壮的)

设置 NA 的惯用方法R 中的值就是用is.na<- , 例如

is.na(hintsData$WhereSeekHealthInfo) <- hintsData$WhereSeekHealthInfo <0

根据您读取数据的方式,您可以设置它来处理您的信息

例如,如果您在阅读文本文件之前知道有效响应,则可以创建自己的类(class)

 setAs("character","Q1", function(from) factor(from ,levels = c('Internet','Newspaper'))

read.csv('mytextfile.csv', colClasses = list(WhereSeekHealthInfo = 'Q1')

或者可能(更明确地说明 NA 值,而不是更明确地说明什么是有效值。

  setAs("character","Q1b", function(from) {is.na(from) <- suppressWarnings(as.numeric(from)) <0;from})

关于在 R 中用 NA 替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15626158/

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