附带的屏幕截图显示了我刚从excel文件导入R的数据帧的一部分.在空白的单元格中,我需要插入'NA'.如何将NA插入任何空白的细胞中(同时留下已经填充的细胞)?
如何使用read.csv命令将特定行读入R?假如我有一个包含10行数据的CSV文件,而我只想读取第5行数据,我尝试执行以下操作,但它似乎不起作用:
myFile <- "MockData.csv"
myData <- read.csv(myFile, row.names=5)
myData
Run Code Online (Sandbox Code Playgroud)
谢谢!
我在 Windows 7 上运行 rStudio v3.1.2。这台笔记本电脑是 64 位机器。
我正在参加 Coursera 提供的 JHU R 编程课程,但我在问题的第 1 部分中遇到了一个错误。我有一些错误处理函数,我没有考虑到这个例子,所以我真的只是想展示我绝对需要的东西。我包含这些消息的唯一原因是证明必须满足所有条件才能继续。
pollutantmean <- function(directory, pollutant, id=1:332) {
setwd("C:\\Users\\WR-eSUB\\specdata")
if(!isValidDirectory(directory)) {
stop("Invalid input given. Please specify valid directory to operate on.")
}
if(!isValidPollutant(pollutant)) {
stop("Invalid input given. Please specify valid pollutant (nitrate/sulfate).")
}
if(!isValidIdRange(id)) {
stop("Invalid input given. Please specify valid id range (1:332).")
}
sortedData = numeric()
for (i in id) {
thisFileName = paste(formatC(i, width = 3, flag = "0"), ".csv", sep="")
thisFileRead = …
Run Code Online (Sandbox Code Playgroud) 我意识到读取.csv文件会删除前导零,但是对于我的一些文件,它保持前导零而不必在read.csv中显式设置colClasses.另一方面,令我困惑的是在其他情况下,它会删除前导零.所以我的问题是:read.csv在哪些情况下删除前导零?
我有一大段代码,我经常运行这些代码来读入和清理 .csv 文件。清理过程的一部分是识别日期列并将它们转换为正确的格式,我用一个函数来完成(见下文)。我将日期格式设置为转换为,"%d/%m/%Y"
因为这是我在 MS Excel (office 2010) 中查看时它在 .csv 文件中的显示方式。
> convert.dates
function(data, datestring, excludestring=NULL, extradatecols=NULL, dateformat) {
if(is.null(extradatecols)) {datecols1 <- grep(datestring, names(data), value=TRUE)} else {datecols1 <- c(grep(datestring, names(data), value=TRUE), extradatecols)}
if(is.null(excludestring)) {datecols2 <- datecols1} else {datecols2 <- datecols1[-grep(excludestring, datecols1)]}
data[, datecols2] = data.frame(lapply(data[, datecols2], as.Date, format=dateformat), stringsAsFactors=FALSE)
data
}
Run Code Online (Sandbox Code Playgroud)
我最近升级到 R 3.2.3 并将我的 R Studio 也更新到版本 0.99.489。
更新后,尽管选择了正确的格式(基于我在 .csv 文件中看到的内容),我的函数仍无法转换日期。进一步检查后,read.csv
将我的日期从"%d/%m/%Y"
我在 .csv 文件中观察到的格式转换为"%Y-%m-%d"
并将它们存储为一个因素。然后我就能够应用我的 convert.dates 函数和"%Y-%m-%d"
格式并且它起作用了。
> str(mydata$dob)
Factor w/ 3069 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试做什么
我的源文件非常大,我想避免将其复制到其他文件夹中。我决定创建一个指向大文件的符号链接并希望用于read.csv
读取该文件。
文件夹结构
什么地方出了错
读取源文件工作正常,但是当我尝试读取符号链接时,出现以下错误:line 1 appears to contain embedded nulls
。
我知道我可以复制该文件并将其放入我的第二个项目的文件夹中,但我想知道是否有办法使用符号链接。如果没有,我想知道一种避免在多个项目中重复数据文件的好方法。
有时,.CSV 文件的开头会出现字节顺序标记 (BOM)。当您使用记事本或 Excel 打开文件时,该符号不可见,但是,当您使用各种方法在 R 中读取文件时,您会在第一列的名称中看到不同的符号。这是一个例子
\n\n开头带有 BOM 的示例 csv 文件。
\n\nID,title,clean_title,clean_title_id\n1,0 - 0,,0\n2,"""0 - 1,000,000""",,0\n27448,"20yr. rope walker\nigger",Rope Walker Igger,1832700817\n
Run Code Online (Sandbox Code Playgroud)\n\n通读read.csv
基础 R 包
(x1 = read.csv("file1.csv",stringsAsFactors = FALSE))\n# \xc3\xaf..ID raw_title semi_clean semi_clean_id\n# 1 1 0 - 0 0\n# 2 2 "0 - 1,000,000" 0\n# 3 27448 20yr. rope walker\\nigger Rope Walker Igger 1832700817\n
Run Code Online (Sandbox Code Playgroud)\n\n通读fread
data.table包中的内容
(x2 = data.table::fread("file1.csv"))\n# \xc3\xaf\xc2\xbb\xc2\xbfID raw_title semi_clean semi_clean_id\n# 1: 1 0 - 0 0\n# 2: 2 …
Run Code Online (Sandbox Code Playgroud) 我在那个帖子read.csv 并跳过 R 中的最后一列但没有找到我的答案,并尝试直接检查答案...但这不是正确的方法(感谢mjuarez花时间让我回到正轨.
原来的问题是:
我已经阅读了其他几篇关于如何使用 read.csv 导入 csv 文件但跳过特定列的文章。但是,我发现的所有示例的列都很少,因此很容易执行以下操作:
Run Code Online (Sandbox Code Playgroud)columnHeaders <- c("column1", "column2", "column_to_skip") columnClasses <- c("numeric", "numeric", "NULL") data <- read.csv(fileCSV, header = FALSE, sep = ",", col.names = columnHeaders, colClasses = columnClasses)
所有答案都很好,但不适用于我打算做的事情。所以我问我自己和其他人:
在一个功能中,
data <- read_csv(fileCSV)[,(ncol(data)-1)]
可以工作吗?
我已经尝试在一行中R
继续data
,前 6 列中的所有 5 列,所以不是最后一列。为此,我想在列数中使用“-”,您认为可能吗?我怎样才能做到这一点?
谢谢!
我的代码如下:
read.csv("http://asic.gov.au/Reports/YTD/2018/RR20180420-001-SSDailyYTD.csv", skip=1, fileEncoding = "UTF-16", sep = "\t", header = FALSE)
Run Code Online (Sandbox Code Playgroud)
Error in read.table(file = file, header = header, sep = sep, quote = quote, : no lines available in input
@hrbrmstr - 会话信息读数
sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C
[5] LC_TIME=English_Australia.1252
attached base packages:
[1] stats graphics grDevices utils datasets …
Run Code Online (Sandbox Code Playgroud) 我使用这个命令跳过第二行数据:
Df=(read.csv(“IMDB_data.csv”, header=T, sep=",")[-2,])
Run Code Online (Sandbox Code Playgroud)
这背后的解释是什么?它可以用于跳过超过1个特定行吗?它可以用于跳过列吗?请帮忙.
r ×10
read.csv ×10
csv ×2
excel ×2
read.table ×2
data.table ×1
dataframe ×1
date ×1
format ×1
leading-zero ×1
na ×1
readr ×1
rstudio ×1
symlink ×1