全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3048 6
2020-02-27
比如说我的数据中缺失值表示为-9,就像下面的数据
V1V2V3V4
12-93
4-956
78910
11121314

现在我想要删掉包含-9的第一和第二行,应该怎么做呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-2-27 11:35:02

用dplyr包中的filter可以实现。但是也许有更好的方法。

library(xlsx2dfs)
df=read.xlsx("tes.xlsx")  
df 
str(df)  
library(dplyr)
df <- df %>% filter(V2!=-9,V3!=-9)
df
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-2-27 11:50:03
caozhaowen 发表于 2020-2-27 11:35
用dplyr包中的filter可以实现。但是也许有更好的方法。
library(xlsx2dfs)
df=read.xlsx("tes.xlsx")
用dplyr包中的filter可以实现。但是也许有更好的方法。
library(xlsx2dfs)
## Loading required package: openxlsx
df=read.xlsx("tes.xlsx")  
df
##   V1 V2 V3 V4
## 1  1  2 -9  3
## 2  4 -9  5  6
## 3  7  8  9 10
## 4 11 12 13 14
str(df)  
## 'data.frame':    4 obs. of  4 variables:
##  $ V1: num  1 4 7 11
##  $ V2: num  2 -9 8 12
##  $ V3: num  -9 5 9 13
##  $ V4: num  3 6 10 14
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
##     filter, lag
## The following objects are masked from 'package:base':
##
##     intersect, setdiff, setequal, union
df <- df %>% filter(V2!=-9,V3!=-9)
df
##   V1 V2 V3 V4
## 1  7  8  9 10
## 2 11 12 13 14
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-2-27 14:59:18
caozhaowen 发表于 2020-2-27 11:50
用dplyr包中的filter可以实现。但是也许有更好的方法。
library(xlsx2dfs)
## Loading required packag ...
感谢你的回复!
那如果数据非常大,而我不知道那些列里包含-9,应该怎么办呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-2-27 20:04:24
X光头 发表于 2020-2-27 14:59
感谢你的回复!
那如果数据非常大,而我不知道那些列里包含-9,应该怎么办呢?
复制代码


library(xlsx2dfs)
## Loading required package: openxlsx
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
##     filter, lag
## The following objects are masked from 'package:base':
##
##     intersect, setdiff, setequal, union
df=read.xlsx("tes.xlsx")  
df
##   V1 V2 V3 V4
## 1  1  2 -9  3
## 2  4 -9  5  6
## 3  7  8  9 10
## 4 11 12 13 14
#变量名字改成小写算了,方便
names(df) <- c("v1","v2","v3","v4")
#找到应删除的位置
df_filter <- (data.frame(torf <- (df+9)==0 )%>%
  mutate(sum=v1+v2+v3+v4))["sum"]
#先合并,再筛选,然后选出需要的部分
result <- bind_cols(df,df_filter) %>%
  filter(sum==0) %>%
  select(-sum)
result
##   v1 v2 v3 v4
## 1  7  8  9 10
## 2 11 12 13 14
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-2-29 15:21:58
caozhaowen 发表于 2020-2-27 20:04
library(xlsx2dfs)
## Loading required package: openxlsx
library(dplyr)
非常感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群