目录
一、基础数据类型
1. 数值型(Numeric)
数值型是 R 语言中最基本的数据类型,用于存储数字,支持整数和浮点数。在 R 中,数值型默认以双精度浮点数形式存储。
# 整数和浮点数
x <- 123 # 整数
y <- 2.344 # 浮点数
z <- 5e3 # 科学计数法(5000)
# 检查数据类型
class(x) # 输出 "numeric"
is.numeric(y) # 输出 TRUE
注意事项:
- R 中没有专门的整数类型声明,默认所有数字都是浮点数
- 如需显式声明整数,需在数字后加 L,如 123L
2. 字符型(Character)
字符型用于存储文本数据,需用单引号或双引号包裹。R 语言对单引号和双引号没有严格区分,但需注意引号的嵌套使用。
# 字符型示例
a <- '123' # 字符串 "123"(非数字)
b <- "hello R" # 包含空格的字符串
c <- "It's R!" # 双引号可包含单引号
d <- 'He said "Hi"' # 单引号可包含双引号
# 字符串拼接
paste("Hello", "World", sep = " ") # 输出 "Hello World"
字符串处理常用函数:
nchar()
:计算字符串长度substr()
:提取子字符串gsub()
:字符串替换paste()
/paste0()
:字符串拼接
3. 逻辑型(Logical)
逻辑型用于存储布尔值,仅支持TRUE
(或简写T
)和FALSE
(或简写F
)。逻辑值通常是比较和逻辑运算的结果。
# 逻辑值
is_valid <- TRUE
is_error <- F
# 逻辑运算结果
5 > 3 # 输出 TRUE
"apple" == "banana" # 输出 FALSE
逻辑运算符号:
&
:逻辑与|
:逻辑或!
:逻辑非&&
/||
:向量化逻辑运算
4. 因子型(Factor)
因子型用于存储分类数据,内部用整数表示不同类别。因子在统计建模和数据分析中非常有用,特别是在处理分类变量时。
# 创建因子
gender <- factor(c("Male", "Female", "Male"))
class(gender) # 输出 "factor"
# 查看水平(类别)
levels(gender) # 输出 "Female" "Male"
因子处理技巧:
levels()
:查看或修改因子水平nlevels()
:获取因子水平数量droplevels()
:删除未使用的因子水平
二、日期与时间类型
R 语言提供了专门的日期和时间处理机制,主要包括Date
和POSIXct/POSIXlt
两种类型。
# 日期
today <- Sys.Date() # 获取当前日期
date1 <- as.Date("2023-01-01")
date1 - today # 计算日期间隔
# 日期时间
now <- Sys.time() # 获取当前日期时间
time1 <- as.POSIXct("2023-01-01 12:00:00", tz = "UTC")
日期时间处理要点:
- 日期默认格式为 "YYYY-MM-DD"
- 使用
as.Date()
和as.POSIXct()
进行类型转换 - 日期时间计算支持加减运算
- 时区问题需特别注意,避免数据混淆
三、缺失值与特殊值
R 语言使用特定的符号表示缺失值和特殊值,这些值在数据处理中需要特别处理。
x <- c(1, NA, 3)
is.na(x) # 检测缺失值,输出 TRUE FALSE FALSE
y <- 0/0
is.nan(y) # 输出 TRUE
常见特殊值:
NA
:表示缺失值NaN
:表示非数字(如 0/0 的结果)Inf
和-Inf
:表示正无穷和负无穷NULL
:表示空对象
缺失值处理方法:
is.na()
:检测缺失值na.omit()
:删除包含缺失值的观测complete.cases()
:识别完整的观测replace_na()
:替换缺失值(需加载 tidyr 包)
四、数据类型转换
R 语言提供了丰富的类型转换函数,帮助用户在不同数据类型之间进行转换。
# 数值型转字符型
num <- 123
as.character(num) # 输出 "123"
# 字符型转数值型
char <- "3.14"
as.numeric(char) # 输出 3.14
# 逻辑型转数值型
logical <- TRUE
as.numeric(logical) # 输出 1(TRUE转为1,FALSE转为0)
类型转换注意事项:
转换需确保数据的逻辑合理性;无法转换的值会返回NA
;因子转换需注意水平与数值的对应关系
五、数据类型检测
在处理复杂数据时,准确检测数据类型至关重要。R 语言提供了多种检测函数。
x <- 123
is.numeric(x) # TRUE
is.integer(x) # FALSE(默认是numeric,不是integer)
y <- "hello"
is.character(y) # TRUE
is.factor(y) # FALSE
常用检测函数:
class()
:返回对象的类typeof()
:返回对象的底层数据类型-
is.*()
系列函数:检测特定类型