R语言 数据帧
什么是数据帧?
数据帧(Dtata Frame,也有翻译为数据框的)是长度相等的向量的列表。矩阵只包含一种数据类型,而数据帧接受不同的数据类型(数字、字符、因子等)。
创建数据帧
通过将变量a,b,c,d传递给data.frame()函数来创建数据帧。我们可以使用name()来命名列,并简单地指定变量的名称。
data.frame(df, stringsAsFactors = TRUE)
参数 | 描述 |
---|---|
df | 可以是转换为数据帧的矩阵,也可以是要连接的变量集合。 |
stringsAsFactors | 布尔值,默认情况下将字符串转换为因子(stringsAsFactors=TRUE)。 |
我们可以通过组合四个相同长度的变量来创建第一个数据集。
a <- c(10,20,30,40)
b <- c('book', 'pen', 'textbook', 'pencil_case')
c <- c(TRUE,FALSE,TRUE,FALSE)
d <- c(2.5, 8, 10, 7)
# 连接变量以创建数据帧
df <- data.frame(a,b,c,d)
df
a b c d
1 10 book TRUE 2.5
2 20 pen FALSE 8.0
3 30 textbook TRUE 10.0
4 40 pencil_case FALSE 7.0
可以看到列标题与变量的名称相同。我们可以使用names()函数更改列名。请看下面的例子:
names(df) <- c('ID', 'items', 'store', 'price')
df
ID items store price
1 10 book TRUE 2.5
2 20 pen FALSE 8.0
3 30 textbook TRUE 10.0
4 40 pencil_case FALSE 7.0
打印结构:
> str(df)
'data.frame': 4 obs. of 4 variables:
$ ID : num 10 20 30 40
$ items: chr "book" "pen" "textbook" "pencil_case"
$ store: logi TRUE FALSE TRUE FALSE
$ price: num 2.5 8 10 7
默认情况下,数据帧将字符串变量返回为因子。
数据帧切片
可以对数据帧的值进行切片。我们选择要返回到数据帧名称前面的括号中的行和列。
数据帧由行和列组成,df[A, B]。A表示行,B表示列。我们可以通过指定行和/或列来进行切片。
在图1中,左边的部分表示行,右边的部分表示列。注意冒号“:”表示“到/至”。例如,1:3打算从1到3选择值。

下图显示了如何访问不同选择的数据帧:
- 黄色箭头选择列2中的第1行
- 绿色箭头选择行1到行2
- 红色箭头选择列1
- 蓝色箭头选择第1至3行和第3至4列
注意,如果让左侧为空,R将选择所有的行,让右侧空白,R将选择所有列。

将列附加到数据帧
还可以将列追加到数据帧。您需要使用符号$来附加一个新变量:
# 创建一个新的向量
quantity <- c(10, 35, 40, 5)
# 添加`quantity`到 `df` 数据帧
df$quantity <- quantity
注意:向量中元素的个数必须等于数据帧中元素的个数。
选择数据帧中的一列
有时,我们需要存储数据帧中的一列以备将来使用或对一列执行操作。我们可以使用$符号从数据帧中选择列。
df$ID
[1] 1 2 3 4
子集划分
在前一节中,我们选择了不带条件的整个列。可以根据某个条件是否为真对其进行子集划分。使用subset()函数。
subset(x, condition)
arguments:
- x: data frame used to perform the subset
- condition: define the conditional statement
我们想返回只有项目与价格超过10,我们可以做:
subset(df, subset = price > 5)
ID items store price
2 20 pen FALSE 8
3 30 textbook TRUE 10
4 40 pencil_case FALSE 7

关注公众号,获取一手资讯
“ R语言 数据帧 ” comments 0