我有一个包含34个序数和NA
变量的,其中有15,000个观测值。 我正在进行市场细分研究的聚类,并需要删除仅包含NAs
的行。在删除userID后,我收到了一个错误消息,要求在聚类之前省略2099行仅包含NAs
的行。
我找到了一个链接可以删除所有NA
值的行,但我需要确定这2099行中的哪些行具有全部NA值。这是有关删除中所有NA
值的行的讨论链接: Remove Rows with NAs in data.frame
以下是六个变量的前五个观测值的示例:
> head(Store2df, n=5)
RowNo Age Gender HouseholdIncome MaritalStatus PresenceofChildren
1 1 <NA> Male <NA> <NA> <NA>
2 2 45-54 Female <NA> <NA> <NA>
3 3 <NA> <NA> <NA> <NA> <NA>
4 4 <NA> <NA> <NA> <NA> <NA>
5 5 45-54 Female 75k-100k Married Yes
#Making a vector
> Vector1 <- Store2df$RowNo
#Taking out RowNo column
> Store2df$RowNo <- NULL
编辑:我将结果放在一个对象中,但发现代码多了一列。在RStudio的环境中点击后,会创建一个名为row.names的额外列,并使用原始行名称标记每一行。删除了几千行数据,新列用旧行号标记了新行。但是当我查看新对象的头部时,我没有看到行标签。为什么row.names标签会显示在环境中,但不在查看头部时呢?
#Remove all rows with only NA values
> Store2df <- Store2[!!rowSums(!is.na(Store2)),]
#View head of store2df
> head(Store2df)
Age Gender HouseholdIncome MaritalStatus PresenceofChildren
1 <NA> Male <NA> <NA> <NA>
2 45-54 Female <NA> <NA> <NA>
5 45-54 Female 75k-100k Married Yes
6 25-34 Male 75k-100k Married No
7 35-44 Female 125k-150k Married Yes
8 55-64 Male 75k-100k Married No
编辑 2:我加入了行号/用户ID列以跟踪用户数量。为了执行删除所有NA
的操作,我取出了第一列。现在我需要跟踪已删除的用户。我有一个包含2000多行所有值都是NA
的列表,我不想手动创建索引来放入每一行。
问题:如何删除与缺失数据对应的电子邮件?
> #First six rows of the column RowNo
> head(Store2df$RowNo)
[1] 1 2 3 4 5 6
我希望在 Store2df 数据框中删除包含 RowNo 的 2099 行。以下是脚本,用于识别 Store2df 数据框中不包含 RowNo 的全部空行。
> which(rowSums(is.na(Store2df))==ncol(Store2df))
展示前6行,第3行和第4行已被删除。
> head(Store2df$RowNo)
[1] 1 2 5 6 7 8
我想完成以下4个步骤:
1)从Store2df data.frame
中提取RowNo
列并保存为单独的向量
2)删除Store2df data.frame
中所有NA
值的行
3)删除与Store2df data.frame
相同的行,同时也从Store2new1 vector
中删除
4)将vector
和data.frame
组合在一起,并使vector
与data.frame
匹配
RowNo
的大小,以便与data.frame
Store2df 合并。RowNo
将会在 Store2df 中引用正确的信息。 - Scott Davis