如何解决无效因子水平,只为因子变量中的一个水平生成 NA
我已经查看了此错误代码的其他答案,但它们并没有解决我的问题。
我正在尝试根据另一个变量的级别更改一个变量的级别。
我可以对变量的两个级别执行此操作,但不能对第三个级别执行此操作,这是在我收到错误消息时:
警告信息:
在 [<-.factor
(*tmp*
,supportdf$Q7a == "我不需要任何额外的支持",:
无效因子水平,NA 生成
由于我无法共享数据集,因此很难复制错误,但这是最接近的近似值
var1<- c(NA,NA,"Yes,from my family",from my family" )
var2<- c(NA,from my friends",from my friends" )
var3<- c("I did not need any additional support","I did not need any additional support",NA )
var4<- c(NA,NA )
df<- data.frame(var1,var2,var3,var4)
df
var1 var2 var3 var4
1 <NA> <NA> I did not need any additional support <NA>
2 <NA> <NA> <NA> I did not need any additional support
3 <NA> <NA> <NA> Yes,from my family
4 <NA> <NA> <NA> Yes,from my friends
5 <NA> <NA> <NA> I did not need any additional support
6 <NA> Yes,from my friends <NA> <NA>
7 Yes,from my family <NA> <NA> <NA>
8 Yes,from my family <NA> I did not need any additional support <NA>
9 <NA> Yes,from my friends <NA> <NA>
10 Yes,from my family Yes,from my friends <NA> <NA>
最终我想根据 var4 值更改 var1、var2 和 var3,然后将 var4 更改为 NA,如下所示
var1a<- c(NA,from my family" )
var2a<- c(NA,from my friends" )
var3a<- c("I did not need any additional support",NA )
var4a<- c(NA,NA )
dfa<- data.frame(var1a,var2a,var3a,var4a)
dfa
var1a var2a var3a var4a
1 <NA> <NA> I did not need any additional support NA
2 <NA> <NA> I did not need any additional support NA
3 Yes,from my family <NA> <NA> NA
4 <NA> Yes,from my friends <NA> NA
5 <NA> <NA> I did not need any additional support NA
6 <NA> Yes,from my friends <NA> NA
7 Yes,from my family <NA> <NA> NA
8 Yes,from my family <NA> I did not need any additional support NA
9 <NA> Yes,from my friends <NA> NA
10 Yes,from my friends <NA> NA
我一直在这样做
df$var1[df$var4 == "Yes,from my family" ]<- "Yes,from my family"
df$var4[df$var4 == "Yes,from my family" ]<- NA
df$var2[df$var4== "Yes,from my friends" ]<- "Yes,from my friends"
df$var4[df$var4 == "Yes,from my friends" ]<- NA
但是当我到达 var3(在我的数据集中,而不是在一个虚构的例子中)时,我收到错误消息
df$var3[df$var4 == "I did not need any additional support" ]<- "I did not need any additional support"
Warning message:
In `[<-.factor`(`*tmp*`,supportdf$Q7a == "I did not need any additional support",:
#invalid factor level,NA generated
为什么只有这个级别会出现这种情况?我也试过使用 if 子句,但这不起作用,我收到此错误消息
df<- if (df$var4 == "I did not need any additional support")df$Qvar3<-"I did not need any additional support"
Error in if (supportdf$Q7a == "I did not need any additional support") supportdf$Q7.6 <- "I did not need any additional support" :
missing value where TRUE/FALSE needed
In addition: Warning message:
In if (supportdf$Q7a == "I did not need any additional support") supportdf$Q7.6 <- "I did not need any additional support" :
the condition has length > 1 and only the first element will be used
感谢任何帮助或建议
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。