R语言 对数据框架进行索引和切分
在这篇文章中,让我们来讨论一下R语言中的数据框架的索引和切片。
为数据框建立索引
通过对数据框架进行索引,我们将获得特定的列数据。索引可以通过在方括号中指定列名来完成。索引数据框架的语法是
dataframeName[“columnName”]
例子: 在这个例子中,让我们创建一个数据框 “stats”,其中包含球员的跑动成绩和所拿的小球,然后对数据框进行索引,以提取球员的跑动成绩。
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, NA),
wickets=c(17, 20, NA, 5))
print("stats Dataframe")
stats
# fetch data in certain column
stats["runs"]
输出
"stats Dataframe"
player runs wickets
1 A 100 17
2 B 200 20
3 C 408 NA
4 D NA 5
runs
1 100
2 200
3 408
4 NA
切分数据框
切分数据框可以得到所需的行和列。这可以通过三种方式完成。它们列在下面-
- 用[,]进行分片
- 用逻辑向量分片。
- 用subset()分片。
用[ , ] 切片
用[ , ]
对数据帧进行分片,返回指定的行和列的数据。这方面的语法提到如下
dataframeName[ fromRow : toRow , columnNumber ]
例子
在下面的代码中,我们对数据框架进行了切片处理,以获取指定的行和列。
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, NA),
wickets=c(17, 20, NA, 5))
print("stats Dataframe")
stats
# fetch 2,3 rows and 1,2 columns
stats[2:3,c(1,2)]
# fetch 1:3 rows of 1st column
cat("players - ")
stats[1:3,1]
输出
"stats Dataframe"
player runs wickets
1 A 100 17
2 B 200 20
3 C 408 NA
4 D NA 5
player runs
2 B 200
3 C 408
players - [1] "A" "B" "C"
用逻辑向量进行切片
我们可以通过指定逻辑条件对数据进行切片处理。它被用来获取过滤后的数据。
例子
在这个例子中,我们获取了得分超过100分的球员的记录。
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, 23),
wickets=c(17, 20, 3, 5))
print("stats Dataframe")
stats
# fetch player details who scores
# more than 100 runs
batsmens<-stats[stats$runs>100,]
batsmens
输出
"stats Dataframe"
player runs wickets
1 A 100 17
2 B 200 20
3 C 408 3
4 D 23 5
player runs wickets
2 B 200 20
3 C 408 3
用subset()进行切片
我们可以使用subset()方法对数据帧进行切片。subset方法接受数据、要切片的过滤逻辑和要获取的列。使用subset进行切分的语法是
subset( x = dataframe, subset = filter_logic, select=c(columnNames))
例子
在下面的代码中,我们通过使用子集方法对数据框进行切片,从数据框的统计中获取了摘取5个以上小球的球员。
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, 23),
wickets=c(17, 20, 3, 5))
print("stats Dataframe")
stats
# fetch player details who pick
# more than 5 wickets
subset(x=stats, subset=wickets>5, select=c(player,wickets))
输出
"stats Dataframe"
player runs wickets
1 A 100 17
2 B 200 20
3 C 408 3
4 D 23 5
player wickets
1 A 17
2 B 20