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选择值。

左边的部分表示行,右边的部分表示列
图1

下图显示了如何访问不同选择的数据帧:

  • 黄色箭头选择列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

评论/回复

电子邮件地址不会被公开。 必填项已用*标注