Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-删除符合特定条件的行_R_Delete Row - Fatal编程技术网

R-删除符合特定条件的行

R-删除符合特定条件的行,r,delete-row,R,Delete Row,我实际上正在做一个关于R的学校项目。我想从我的数据库中删除在特定变量中包含特定字符的观察结果 更准确地说,我正在构建一个方框图来比较两个变量,年份和电影类型。但在我的.csv文件中,有些行包含;在电影的标题中,它完全弄乱了我的数据,就像我的分隔符一样;也如何删除58000上的第5行 我没有在搜索栏中找到我的答案 提前谢谢大家, 阿克塞尔 你真的应该包括一个例子,但我想我可以给你一些代码,应该做你想要的 dat = data.frame(title = c("Babe", "Toy Story",

我实际上正在做一个关于R的学校项目。我想从我的数据库中删除在特定变量中包含特定字符的观察结果

更准确地说,我正在构建一个方框图来比较两个变量,年份和电影类型。但在我的.csv文件中,有些行包含;在电影的标题中,它完全弄乱了我的数据,就像我的分隔符一样;也如何删除58000上的第5行

我没有在搜索栏中找到我的答案

提前谢谢大家,

阿克塞尔


你真的应该包括一个例子,但我想我可以给你一些代码,应该做你想要的

dat = data.frame(title = c("Babe", "Toy Story", "Mulan;"), rating = c(3,4,5))

> dat
      title rating
1      Babe      3
2 Toy Story      4
3    Mulan;      5

dat = dat[!grepl(";", dat$title), ]

> dat
      title rating
1      Babe      3
2 Toy Story      4

在将csv文件作为数据帧读入之前,可以尝试删除csv文件中的这些行。比如:

## first read in as text
x <- readLines('file.csv')

## I counted 31 columns in your data--assuming that's correct, remove lines that don't 
## have 30 semicolons
xClean <- x[sapply(gregexpr(';', x), function(n) length(n) == 30)]

## now read the cleaned text to a data.frame
dat <- read.table(text = xClean, sep = ';', header = TRUE)
编辑: 在我看来,如果包含这些有问题行的清理版本,而不是直接删除它们,可能会更有帮助。为了清理并包括它们,这很可能会起作用:

x <- readLines('file.csv')

xSplit <- strsplit(x, ';')
xClean <- sapply(xSplit, function(s) {
    paste(paste(s[0:(length(s) - 30)], collapse = ' '),
          paste(s[(length(s) - 29):length(s)], collapse = ';'), 
          sep = ';')
})

dat <- read.table(text = xClean, sep = ';', header = TRUE)

谢谢现在,当我添加这行代码时,出现了错误警告消息:In grepl;,数据$title:la chaîne de caractères entrée 97在cet环境语言中不正确。我发现这可能与编码有关,但我真的不知道如何处理它。@AxelPHILIP将数据文件的头添加到问题中。我需要查看数据以修复itI我将其添加到问题中。正如你们所看到的,我有奇怪的年份值,而在我的csv文件中,所有年份都是1975年或2013年。@Axelphip我明白了。您的文件是excel文件吗?是的,更准确地说是.csv文件;或者将其删除。@PraveenRKaruppannan是否直接在文件中?由于这是一个练习,我认为这是不允许的…在将数据集导入R之后。您可以替换;
x <- readLines('file.csv')

xSplit <- strsplit(x, ';')
xClean <- sapply(xSplit, function(s) {
    paste(paste(s[0:(length(s) - 30)], collapse = ' '),
          paste(s[(length(s) - 29):length(s)], collapse = ';'), 
          sep = ';')
})

dat <- read.table(text = xClean, sep = ';', header = TRUE)