R - 测试 Data.Frame 单元格是否为 NULL/empty
R - Test whether a Data.Frame Cell is NULL/empty
我正在通过外部脚本存储过程将来自 SQL Server 2016 的数据传递给 R 进行处理。
我想根据数据框中位置 [I,11] 处的单元格是否具有整数值来执行 e 或不执行 e。
for(i in 1:2){
if(d1[i,11]==""){
d2[i,1]<-d1[i,1]
d2$Ledger<-d1[i,2]
d2$Account<-d1[i,3]
d2$Title<-d1[i,4]
d2$ActualTitle<-d1[i,5]
d2$AccountNumber<-d1[i,6]
d2$Sortcode<-d1[i,7]
d2$PostCode1<-d1[i,8]
d2$PostCode2<-d1[i,9]
d2$AddressName<-d1[i,10]
d2$MatchedID<-d1[i,11]
}
我正在努力寻找一种方法,请帮忙。
进一步测试表明,存储的值在 R 中为 NA,使用函数 is.na(表达式)产生布尔值 return。
for(i in 1:2){
if(is.na(d1[i,11])){
d2[i,1]<-d1[i,1]
d2$Ledger<-d1[i,2]
最好的方法是不使用循环。当数据框的大小很大时,向量操作更好。
要检查某物是否为 <NA>
,请使用:
if(is.na(item))
这将 return 一个 TRUE
如果项目是 <NA>
,否则 FALSE
。 SQL 中的任何缺失值在 R 中将表示为 <NA>
。同样,您可以使用 is.integer(item)
来检查某些内容是否为整数。
然后您可以使用以下方法对数据框的列进行选择性操作:
dataframe$columnname[which(is.na(dataframe$column))] <- new_value
您也可以使用 ifelse
来做同样的事情:
> dataframe$columnname <- ifelse(is.na(dataframe$column), value_for_if_satisfied, value_for_else_satisfied)
我正在通过外部脚本存储过程将来自 SQL Server 2016 的数据传递给 R 进行处理。
我想根据数据框中位置 [I,11] 处的单元格是否具有整数值来执行 e 或不执行 e。
for(i in 1:2){
if(d1[i,11]==""){
d2[i,1]<-d1[i,1]
d2$Ledger<-d1[i,2]
d2$Account<-d1[i,3]
d2$Title<-d1[i,4]
d2$ActualTitle<-d1[i,5]
d2$AccountNumber<-d1[i,6]
d2$Sortcode<-d1[i,7]
d2$PostCode1<-d1[i,8]
d2$PostCode2<-d1[i,9]
d2$AddressName<-d1[i,10]
d2$MatchedID<-d1[i,11]
}
我正在努力寻找一种方法,请帮忙。
进一步测试表明,存储的值在 R 中为 NA,使用函数 is.na(表达式)产生布尔值 return。
for(i in 1:2){
if(is.na(d1[i,11])){
d2[i,1]<-d1[i,1]
d2$Ledger<-d1[i,2]
最好的方法是不使用循环。当数据框的大小很大时,向量操作更好。
要检查某物是否为 <NA>
,请使用:
if(is.na(item))
这将 return 一个 TRUE
如果项目是 <NA>
,否则 FALSE
。 SQL 中的任何缺失值在 R 中将表示为 <NA>
。同样,您可以使用 is.integer(item)
来检查某些内容是否为整数。
然后您可以使用以下方法对数据框的列进行选择性操作:
dataframe$columnname[which(is.na(dataframe$column))] <- new_value
您也可以使用 ifelse
来做同样的事情:
> dataframe$columnname <- ifelse(is.na(dataframe$column), value_for_if_satisfied, value_for_else_satisfied)