向量可以定义为具有相同数据类型的数据序列。在R中,可以使用c()函数创建向量。
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 vector
User.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 vector
User.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 vector
User.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 vector
User.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 vector
User.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)
输出如下:
在上面的代码中, 我们使用另外3行创建了一个新的数据框架" new.data", 然后将两个数据框架绑定在一起, 从而添加了" new.data"行。