R 中的 read.csv 和 read_csv 函数在处理 NULL 值时有什么区别?

问题描述 投票:0回答:1

我在上传 csv 文件时在 R 中遇到问题。由于某种原因,当使用 read.csv 函数时,将 csv 文件保存到数据框后,我的空值没有显示为空。有谁知道为什么 read.csv 函数不显示空值,但 read_csv 函数保留空值。注意:我是一名初学者,已经使用大型数据集和 R 工作了大约 5 周。

使用

read.csv

#Importing my csv file
(jan_data <- read.csv('202301-divvy-tripdata.csv'))

# Check for NULL values in the entire data frame
missing_values_df <- is.na(jan_data)

# Print the logical matrix indicating NULL values
print(missing_values_df)

# Count the number of NULL values in each column
print(colSums(missing_values_df))

输出:

ride_id      rideable_type         started_at           ended_at start_station_name 
                 0                  0                  0                  0                  0 
  start_station_id   end_station_name     end_station_id          start_lat          start_lng 
                 0                  0                  0                  0                  0 
           end_lat            end_lng      member_casual 
               127                127                  0 

使用

readr::read_csv()

jan_data <- read_csv('202301-divvy-tripdata.csv')

#Check for NULL values in the entire data frame
missing_values_df <- is.na(jan_data)

#Print the logical matrix indicating NULL values
print(missing_values_df)

#Count the number of NULL values in each column
print(colSums(missing_values_df))```

输出:

ride_id      rideable_type         started_at           ended_at start_station_name 
                 0                  0                  0                  0              26721 
  start_station_id   end_station_name     end_station_id          start_lat          start_lng 
             26721              27840              27840                  0                  0 
           end_lat            end_lng      member_casual 
               127                127                  0 
r null readr
1个回答
4
投票

使用 na.strings= 中的默认

read.csv
参数和
na=
中的
read_csv
参数时,
字符列
的差异在于空字段中。尝试下面的代码,其中最后一行的第二个字段为空。

造成差异的原因是,默认情况下,

na.strings="NA"
中的
read.csv
,因此空字段会导致零长度字符串,而在
read_csv
中,默认值为
na=c("", "NA")
,因此空字段会导致
NA
(不是NULL) .

cat("A,B,C\na,b,c\nd,,e\n", file = "test.csv")
readr::read_csv("test.csv")
## ... snip ...
# A tibble: 2 × 3
  A     B     C    
  <chr> <chr> <chr>
1 a     b     c    
2 d     <NA>  e

read.csv("test.csv")
##   A B C
## 1 a b c
## 2 d   e
© www.soinside.com 2019 - 2024. All rights reserved.