标签: na

在R中用NA替换值

我有一个字符向量,看起来像:

"Internet" "Internet" "-1"       "-5"       "Internet" "Internet" 
Run Code Online (Sandbox Code Playgroud)

我想替换所有可能是负数值(-1,-5等)的NA.

我用这段代码做到了:

hintsData$WhereSeekHealthInfo[hintsData$WhereSeekHealthInfo < 0] <- NA
Run Code Online (Sandbox Code Playgroud)

这似乎有效:

head(hintsData$WhereSeekHealthInfo)
# [1] "Internet" "Internet" NA         NA         "Internet" "Internet"
Run Code Online (Sandbox Code Playgroud)

但是当我这样做的时候

> sum(hintsData$WhereSeekHealthInfo == "Internet")
# [1] NA
Run Code Online (Sandbox Code Playgroud)

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

在运行NA代码之前,我能够运行代码并获得:

> sum(hintsData$WhereSeekHealthInfo == "Internet")
# [1] 1691
Run Code Online (Sandbox Code Playgroud)

那么,如何用NA替换"-1"," - 5"等值,但仍然得到:

> sum(hintsData$WhereSeekHealthInfo == "Internet")
# [1] 1691
Run Code Online (Sandbox Code Playgroud)

如果您有任何想法,请告诉我.我确实找到了关于用NA替换的其他问题但是因为我不知道为什么一旦我用NA替换我就不能再计算值了我不知道要搜索什么或排除.

r sum na

2
推荐指数
1
解决办法
2516
查看次数

Barplot:NA vs空弦

我正在使用条形图(和表格)来显示字符串数据分布.我有NA和空字符串,但是,在条形图中它们是不可区分的.参见例如:

a <- c('a','a','b',NA,'')
barplot(table(a,useNA='always'))
Run Code Online (Sandbox Code Playgroud)

有关如何自动添加"NA"标签以区分NA和空字符串的任何想法?

string r bar-chart na

2
推荐指数
1
解决办法
651
查看次数

删除名为"NA"的列

我正在处理一些RNA-seq计数数据,我有大约60,000个包含基因名称的列和24个包含样本名称的行.当我做了一些基因名称转换时,我留下了一堆被命名的列NA.我知道R的处理NA方式与典型的列名不同,我的问题是如何删除这些列.这是我的数据的一个例子.

  "Gene1"  "Gene2"  "Gene3"  NA  "Gene4"
1  10       11       12      10   15
2  13       12       50      40   30
3  34       23       23      21   22
Run Code Online (Sandbox Code Playgroud)

我想它最终会像

  "Gene1"  "Gene2"  "Gene3"  "Gene4"
1  10       11       12       15
2  13       12       50       30
3  34       23       23       22
Run Code Online (Sandbox Code Playgroud)

我确实找到了一些适用于其他人但不适合我的R代码

df<-df[, grep("^(NA)", names(df), value = TRUE, invert = TRUE)]
Run Code Online (Sandbox Code Playgroud)

r na

2
推荐指数
1
解决办法
3002
查看次数

r为NA分配最近的可用值

而不是for循环,是否有一种简短而有效的方法来为数据框中该列的NA分配最近的可用值?例如,有一个数据帧DF

DF <- data.frame(x = c(1:10), y1 = c(0, 10, NA,5, 20,30,7,8,9,11), y2 = c(NA, 0, NA,5, 20,30,7,8,NA,NA), z = c(95,94,90:87,88,89,90,91))

    x y1 y2  z
1   1  0 NA 95
2   2 10  0 94
3   3 NA NA 90
4   4  5  5 89
5   5 20 20 88
6   6 30 30 87
7   7  7  7 88
8   8  8  8 89
9   9  9 NA 90
10 10 11 NA 91
Run Code Online (Sandbox Code Playgroud)

而最终的DF应该是

    x y1 y2  z …
Run Code Online (Sandbox Code Playgroud)

r nearest-neighbor na

2
推荐指数
1
解决办法
138
查看次数

在R data.table中用NA替换所有空白的快速方法

我有一个大的data.table对象(1M行和220列),我想用NA替换所有空格('').我在这篇帖子中找到了一个解决方案,但是我的数据表速度非常慢(已超过15分钟)其他帖子的示例:

 data = data.frame(cats=rep(c('', ' ', 'meow'),1e6),
                   dogs=rep(c("woof", " ", NA),1e6))
 system.time(x<-apply(data, 2, function(x) gsub("^$|^ $", NA, x)))
Run Code Online (Sandbox Code Playgroud)

有没有更多的data.table快速实现这一目标的方法?

实际上,提供的数据与原始数据看起来不太像,只是举一个例子.我的实际数据的以下子集给出了CharToDate(x)错误:

DT <- data.table(ID=c(10),DEFAULT_DATE=as.Date("2012-07-31"),value='')
system.time(DT[DT=='']<-NA)
Run Code Online (Sandbox Code Playgroud)

r na data.table

2
推荐指数
2
解决办法
8409
查看次数

R-在第一个NA之后用NA替换数据帧行中的所有值

我有3500个观测数据框和278个变量.对于从第一列开始的每一行,我想用NA替换第一个NA之后出现的所有值.例如,我想从像这样的数据框:

X1 X2 X3 X4 X5
 1  3 NA  6  9
 1 NA  4  6 18
 6  7 NA  3  1 
10  1  2 NA  2 
Run Code Online (Sandbox Code Playgroud)

喜欢的东西

X1 X2 X3 X4 X5
 1  3 NA NA NA
 1 NA NA NA NA
 6  7 NA NA NA 
10  1  2 NA NA   
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下嵌套for循环,但它没有终止:

for(i in 2:3500){
 firstna <- min(which(is.na(df[i,])))
 df[i, firstna:278] <- NA
}
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来做到这一点?提前致谢.

r na

2
推荐指数
1
解决办法
768
查看次数

如何在R中打印矩阵并隐藏NA值?

我有一个包含一些NA元素的矩阵(例如mat下面),我想创建一个新函数,用NA隐藏的值打印它(fun如下所示).我怎样才能做到这一点?

mat <- cbind(c(1,2,NA,NA),c(3,3,3,NA),c(NA,4,4,4),c(NA,NA,5,5))
print(mat)

     [,1] [,2] [,3] [,4]
[1,]    1    3   NA   NA
[2,]    2    3    4   NA
[3,]   NA    3    4    5
[4,]   NA   NA    4    5

fun(mat)

     [,1] [,2] [,3] [,4]
[1,]    1    3          
[2,]    2    3    4     
[3,]         3    4    5
[4,]              4    5
Run Code Online (Sandbox Code Playgroud)

r matrix sparse-matrix na

2
推荐指数
1
解决办法
95
查看次数

为DataFrame中的所有列查找和替换NA值

Age <- c(90,56,51,'NULL',67,'NULL',51)
Sex <- c('Male','Female','NULL','male','NULL','Female','Male')
Tenure <- c(2,'NULL',3,4,3,3,4)
df <- data.frame(Age, Sex, Tenure)
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,有'NULL'值作为字符/字符串格式.我试图用NA来代替'NULL'值.我能够将它用于单个列df$age[which(df$Age=='NULL)]<-NA'但是我不想为所有列写这个.

如何将类似的逻辑应用于所有列,以便将所有'NULL'df转换为NAs?我猜测apply或自定义函数或for循环将做到这一点.

r data-analysis na data-cleaning

2
推荐指数
1
解决办法
3554
查看次数

Python:将列中的“ NA”替换为另一列的对应行值中的值(反之亦然)

我有以下数据框:

RawTimes_df =

                  ETime              XTime
0     2018-05-21 04:48:22  2018-05-21 05:52:45
1     2018-05-21 02:18:20  2018-05-21 03:19:53
2     2018-05-21 11:02:31  2018-05-21 12:17:57
3     2018-05-21 06:08:15  2018-05-21 07:08:12
4     NA                   2018-05-21 16:14:16
5     2018-05-21 03:38:12  2018-05-21 04:39:05
6     2018-05-21 17:43:06  2018-05-21 18:59:38
7     2018-05-21 08:52:32  NA
8     2018-05-21 02:27:44  2018-05-21 03:33:08
9     2018-05-21 12:01:12  NA
10    2018-05-21 10:21:10  2018-05-21 11:26:45
11    NA                   2018-05-21 21:27:38
12    2018-05-21 18:02:19  2018-05-21 19:07:31
13    2018-05-21 05:07:28  2018-05-21 06:07:51
14    NA                   2018-05-21 13:10:22
15    2018-05-21 11:05:19  2018-05-21 12:17:31 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas na

2
推荐指数
1
解决办法
740
查看次数

如何简单地用NA计算行数-R

我试图计算具有整个df的NA的行数,因为我想计算具有NA的行占df的总行数的百分比。

我已经看过这篇文章:确定具有NA的行数,但它仅显示特定范围的列。

row r dataframe na

2
推荐指数
1
解决办法
1440
查看次数