Cookbook for R-基础(翻译笔记2)

原书网址
no.2

R语法基础

1.数据筛选

a.使用数字与行列名称
向量
> v <- c(1,4,4,3,2,2,3)
> v[c(2,3,4)]
[1] 4 4 3
> v[2:4]
[1] 4 4 3
> v[c(2,4,3)]
[1] 4 3 4
数据框
> data <- read.table(header=T, text='
+  subject sex size
+                    1   M    7
+                    2   F    6
+                    3   F    9
+                    4   M   11
+                    ')#创建数据框
> data[1,3]
[1] 7
> data[1,"size"]
[1] 7
> data[1:2, ] 
  subject sex size
1       1   M    7
2       2   F    6
> data[c(1,2), ]
  subject sex size
1       1   M    7
2       2   F    6
> data[1:2, 2]
[1] M F
Levels: F M
> data[c(1,2), 2]
[1] M F
Levels: F M
> data[1:2, c("sex","size")]
  sex size
1   M    7
2   F    6
> data[c(1,2), c(2,3)]
  sex size
1   M    7
2   F    6
b.使用布尔值
向量
> v>2
[1] FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
> v[v>2]
[1] 4 4 3 3
> v[ c(F,T,T,T,F,F,T)]
[1] 4 4 3 3
数据框
> data$subject < 3
[1]  TRUE  TRUE FALSE FALSE
> data[data$subject < 3, ]
  subject sex size
1       1   M    7
2       2   F    6
> data[c(TRUE,TRUE,FALSE,FALSE), ]
  subject sex size
1       1   M    7
2       2   F    6
> which(data$subject < 3)
[1] 1 2
反选
> v[-1]
[1] 4 4 3 2 2 3
> v[-1:-3]
[1] 3 2 2 3
> v[-length(v)]
[1] 1 4 4 3 2 2

2.数据筛选2

与向量
> v <- c(1,4,4,3,2,2,3)
> subset(v, v<3)#subset筛选出符合条件的某一项
[1] 1 2 2
> v
[1] 1 4 4 3 2 2 3
> v <- c(1,4,4,3,2,2,3)
> subset(v, v<3)
[1] 1 2 2
> v[v<3]
[1] 1 2 2
> t <- c("small", "small", "large", "medium")
> subset(t, t!="small")
[1] "large"  "medium"
> t[t!="small"]
[1] "large"  "medium"
与数据框
> data <- read.table(header=T, text='
+  subject sex size
+                    1   M    7
+                    2   F    6
+                    3   F    9
+                    4   M   11
+                    ')#创建一个简单的数据框
> subset(data, subject < 3)
  subject sex size
1       1   M    7
2       2   F    6
> data[data$subject < 3, ]
  subject sex size
1       1   M    7
2       2   F    6
#筛选特殊的行或者列
> subset(data, subject < 3, select = -subject)
  sex size
1   M    7
2   F    6
> subset(data, subject < 3, select = c(sex,size))
  sex size
1   M    7
2   F    6
> subset(data, subject < 3, select = sex:size)
  sex size
1   M    7
2   F    6
> data[data$subject < 3, c("sex","size")]
  sex size
1   M    7
2   F    6
#逻辑与 两个条件
> subset(data, subject < 3  &  sex=="M")
  subject sex size
1       1   M    7
> data[data$subject < 3  &  data$sex=="M", ]
  subject sex size
1       1   M    7
#逻辑或 两个条件
> subset(data, subject < 3  |  sex=="M")
  subject sex size
1       1   M    7
2       2   F    6
4       4   M   11
> data[data$subject < 3  |  data$sex=="M", ]
  subject sex size
1       1   M    7
2       2   F    6
4       4   M   11
#对数据操作后的条件筛选
> subset(data, log2(size) > 3 )
  subject sex size
3       3   F    9
4       4   M   11
> data[log2(data$size) > 3, ]
  subject sex size
3       3   F    9
4       4   M   11
#如果元素在另一元素里
> subset(data, subject %in% c(1,3))
  subject sex size
1       1   M    7
3       3   F    9
> data[data$subject %in% c(1,3), ]
  subject sex size
1       1   M    7
3       3   F    9
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值