- 获取数据框的结构:
- 从数据框中提取数据
- 将行和列添加到数据框
R向量用于保存相同数据类型的多个数据值,类似于C语言中的数组。
数据框是用于保存值的二维表结构。在数据帧中, 每一列包含一个变量的值, 每一行也包含每一列的值。数据框可以存储数字数据或字符数据或因子类型数据。
数据框中的每一列应包含相等数量的数据元素。可以从R中的向量转换数据帧。
要使用向量在R中创建数据帧, 我们首先必须具有一系列包含数据的向量。
data.frame()函数用于从R中的向量创建数据帧。
语法如下:
data.frame(vectors)
现在, 让我们根据R中的向量制作一个数据框
这里我们有用于学生数据的向量, 我们必须将它们转换为数据帧。
准备向量:
- User.ID向量:学生的ID向量User.ID包含直接输入学生的条目, 后跟1到8之间的数字。
- 名称向量:学生的名字。
- 性别向量:学生的性别, 包含条目"男"和"女"。
- 标记向量:它包含学生获得的分数。
- 编号:包含每个学生的人数。
# R program to illustrate
# data frame from vectorUser.ID <
- sprintf ( "User % d" , 1:8)
Name <
- c ( "Jhon" , "Lee" , "Suzan" , "Abhinav" , "Brain" , "Emma" , "David" , "Alice" )gender <
- c ( "Male" , "Male" , "Female" , "Male" , "Male" , "Female" , "Male" , "Female" )Marks <
- c (56, 76, 86, 96, 73, 87, 47, 98)Number <
- c ( '111-222' , '222-333' , '333-444' , '444-666' , '333-888' , '000-888-777' , '999-000' , '222-456' )class.df<
- data.frame (User.ID, Name, gender, Marks, Number)
class.df
输出如下:
结果将是一个数据帧。
文章图片
在上面的示例中, 我们有5个向量, Name是长度为8的字符向量, User.ID是数字向量以及所有上述向量, 并使用它们创建了一个列长为8的数据帧, 行长5。
创建数据框后, 我们可以应用各种数据框操作。
获取数据框的结构: str()函数用于获取数据帧的结构。
例子:
# R program to illustrate
# data frame from vectorUser.ID <
- sprintf ( "User % d" , 1:8)
Name <
- c ( "Jhon" , "Lee" , "Suzan" , "Abhinav" , "Brain" , "Emma" , "David" , "Alice" )gender <
- c ( "Male" , "Male" , "Female" , "Male" , "Male" , "Female" , "Male" , "Female" )Marks <
- c (56, 76, 86, 96, 73, 87, 47, 98)Number <
- c ( '111-222' , '222-333' , '333-444' , '444-666' , '333-888' , '000-888-777' , '999-000' , '222-456' )class.df<
- data.frame (User.ID, Name, gender, Marks, Number)
str (class.df)
输出如下:
文章图片
在上面的代码中使用str()函数我们已经看到了数据帧的结构。
从数据框中提取数据 在R中, 我们可以使用列名从数据框中访问特定列。
例子:
# R program to illustrate
# data frame from vectorUser.ID <
- sprintf ( "User % d" , 1:8)
Name <
- c ( "Jhon" , "Lee" , "Suzan" , "Abhinav" , "Brain" , "Emma" , "David" , "Alice" )gender <
- c ( "Male" , "Male" , "Female" , "Male" , "Male" , "Female" , "Male" , "Female" )Marks <
- c (56, 76, 86, 96, 73, 87, 47, 98)Number <
- c ( '111-222' , '222-333' , '333-444' , '444-666' , '333-888' , '000-888-777' , '999-000' , '222-456' )class.df<
- data.frame (User.ID, Name, gender, Marks, Number)
extract<
- data.frame (class.df$Name, class.df$gender)
print (extract)
输出如下:
文章图片
将行和列添加到数据框 添加栏:
要添加列, 我们只需要在数据帧中添加一个新的列向量即可。
让我们以上面的示例来说明如何添加列。
例子:
# R program to illustrate
# data frame from vectorUser.ID <
- sprintf ( "User % d" , 1:8)
Name <
- c ( "Jhon" , "Lee" , "Suzan" , "Abhinav" , "Brain" , "Emma" , "David" , "Alice" )gender <
- c ( "Male" , "Male" , "Female" , "Male" , "Male" , "Female" , "Male" , "Female" )Marks <
- c (56, 76, 86, 96, 73, 87, 47, 98)Number <
- c ( '111-222' , '222-333' , '333-444' , '444-666' , '333-888' , '000-888-777' , '999-000' , '222-456' )class.df<
- data.frame (User.ID, Name, gender, Marks, Number)class.df$New.column<
- sprintf ( "new.data % d" , 1:8)
modified.dataframe <
- class.df
print (modified.dataframe)
输出如下:
文章图片
在上面的示例中, 使用上面的数据框, 我们在数据框中添加了一个新列, 其中包含数据元素new.data。
添加行
要在数据框中添加一行, 我们必须获取另一个数据框, 并且必须使用rbind()函数。
让我们以上面的示例来说明如何向数据帧添加新行。
例子:
# R program to illustrate
# data frame from vectorUser.ID <
- sprintf ( "User % d" , 1:8)
Name <
- c ( "Jhon" , "Lee" , "Suzan" , "Abhinav" , "Brain" , "Emma" , "David" , "Alice" )gender <
- c ( "Male" , "Male" , "Female" , "Male" , "Male" , "Female" , "Male" , "Female" )Marks <
- c (56, 76, 86, 96, 73, 87, 47, 98)Number <
- c ( '111-222' , '222-333' , '333-444' , '444-666' , '333-888' , '000-888-777' , '999-000' , '222-456' )class.df<
- data.frame (User.ID, Name, gender, Marks, Number)# create another data frame
User.ID <
- sprintf ( "User % d" , 9:12)Name <
- sprintf ( "new.data % d" , 9:12)gender <
- c ( "Male" , "Male" , "Female" )Marks <
- c ( 87, 47, 98)Number <
- sprintf ( "new.number % d" , 9:12)
new.data<
- data.frame (User.ID, Name, gender, Marks, Number)final.data <
- rbind (class.df, new.data)print (final.data)
输出如下:
文章图片
【在R编程中从向量创建数据框】在上面的代码中, 我们使用另外3行创建了一个新的数据框架" new.data", 然后将两个数据框架绑定在一起, 从而添加了" new.data"行。
推荐阅读
- 生成长度为n的所有二进制字符串,其中子字符串“01”恰好出现两次
- GTX和RTX–哪个更好(GTX 1080Ti和RTX 2080有什么区别?)
- 算法题(求最长连续子序列)
- 算法题(检测并删除链表中的循环)
- 算法题(快速选择算法)
- Win8双系统更改选择系统的等待时间的办法
- Win8相机应用没有权限运用摄像头的处理办法
- 安装Win8.1卡在正在安装应用怎样办?
- 如何更改Win8系统C盘的名称?