R 带有if语句的条件过滤器
我的数据由列和行组成。每列都有NA和不同的数字。 例如,第1列是: 二, 1. 1. NA 1. NA NA NA 我想为每列中的数字分配一个列idR 带有if语句的条件过滤器,r,if-statement,R,If Statement,我的数据由列和行组成。每列都有NA和不同的数字。 例如,第1列是: 二, 1. 1. NA 1. NA NA NA 我想为每列中的数字分配一个列id for(j in 1:54){ if(!(col[j] <-"NA")){ col[j] <- i } } 第1列的预期结果: 一, 1. NA NA NA 1. NA NA 一, **第2栏:** 二, 2. NA NA NA 2. NA NA 2您可以使用 v <- c(2, 1, NA, NA, 4
for(j in 1:54){
if(!(col[j] <-"NA")){
col[j] <- i
}
}
第1列的预期结果:
一,
1.
NA
NA
NA
1.
NA
NA
一,
**第2栏:**
二,
2.
NA
NA
NA
2.
NA
NA
2您可以使用
v <- c(2, 1, NA, NA, 4, 5, NA)
id <- ifelse(!is.na(v), 1, NA)
id
1 1 NA NA 1 1 NA
这意味着这里不需要for循环。如果可以将函数应用于向量,则应避免使用for循环
另外,请提供您的数据,以便其他人可以像上面我的代码一样实际使用它
编辑
根据注释,您有多个列。您可以使用相同的代码。看这里
df <- data.frame(a= c(2, 1, NA, NA, 4, 5, NA), b= c(3, NA, NA, NA, 5, NA, 6))
id <- sapply(1:ncol(df), function(i){
ifelse(!is.na(df[ , i]), i, NA)})
id
a b
[1,] 1 2
[2,] 1 NA
[3,] NA NA
[4,] NA NA
[5,] 1 2
[6,] 1 NA
[7,] NA 2
你用is.NA测试NA。娜娜和娜娜不一样,但我想看起来不是娜克!我有1259列。所以我需要一个循环,在这里我如何在编辑后保存每一列。比如:1 NA NA 1 NA>2 NA 2 NA 2我不完全理解这个问题。使用dputheaddata或so.dputheadMyData结构提供数据ListNA=c2L,1L,NA,NA,NA,8L,NA..1=c2L,NA,2L,NA,NA,NA,NA..2=c2L,NA,2L,NA,NA,X1=cNA,1L,NA,NA,NA,NA,NA..3=c2L,NA,2L,NA,7L,NA,X1.1=cNA,1L,NA,NA,NA,NA,NA,NA....=c2L,1:1259{