R语言数据重塑知识点总结

R 语言中的数据重塑是关于改变数据被组织成行和列的方式。 大多数时间 R 语言中的数据处理是通过将输入数据作为数据帧来完成的。 很容易从数据帧的行和列中提取数据,但是在某些情况下,我们需要的数据帧格式与我们接收数据帧的格式不同。 R 语言具有许多功能,在数据帧中拆分,合并和将行更改为列,反之亦然。

于数据帧中加入列和行

我们可以使用 cbind() 函数连接多个向量来创建数据帧。 此外,我们可以使用 rbind() 函数合并两个数据帧。

# Create vector objects.
city <- c("Tampa","Seattle","Hartford","Denver")
state <- c("FL","WA","CT","CO")
zipcode <- c(33602,98104,06161,80294)

# Combine above three vectors into one data frame.
addresses <- cbind(city,state,zipcode)

# Print a header.
cat("# # # # The First data frame
") 

# Print the data frame.
print(addresses)

# Create another data frame with similar columns
new.address <- data.frame(
  city = c("Lowry","Charlotte"),
  state = c("CO","FL"),
  zipcode = c("80230","33949"),
  stringsAsFactors = FALSE
)

# Print a header.
cat("# # # The Second data frame
") 

# Print the data frame.
print(new.address)

# Combine rows form both the data frames.
all.addresses <- rbind(addresses,new.address)

# Print a header.
cat("# # # The combined data frame
") 

# Print the result.
print(all.addresses)

当我们执行上面的代码,它产生以下结果 -

# # # # The First data frame
   city    state zipcode
[1,] "Tampa"  "FL" "33602"
[2,] "Seattle" "WA" "98104"
[3,] "Hartford" "CT"  "6161"
[4,] "Denver"  "CO" "80294"

# # # The Second data frame
    city    state  zipcode
1   Lowry   CO   80230
2   Charlotte FL   33949

# # # The combined data frame
    city   state zipcode
1   Tampa   FL  33602
2   Seattle  WA  98104
3   Hartford CT   6161
4   Denver  CO  80294
5   Lowry   CO  80230
6   Charlotte FL  33949

合并数据帧

我们可以使用 merge() 函数合并两个数据帧。 数据帧必须具有相同的列名称,在其上进行合并。

在下面的例子中,我们考虑 library 名称“MASS”中有关 Pima Indian Women 的糖尿病的数据集。 我们基于血压(“bp”)和体重指数(“bmi”)的值合并两个数据集。 在选择这两列用于合并时,其中这两个变量的值在两个数据集中匹配的记录被组合在一起以形成单个数据帧。

library(MASS)
merged.Pima <- merge(x = Pima.te, y = Pima.tr,
  by.x = c("bp", "bmi"),
  by.y = c("bp", "bmi")
)
print(merged.Pima)
nrow(merged.Pima)

当我们执行上面的代码,它产生以下结果 -

  bp bmi npreg.x glu.x skin.x ped.x age.x type.x npreg.y glu.y skin.y ped.y
1 60 33.8    1  117   23 0.466  27   No    2  125   20 0.088
2 64 29.7    2  75   24 0.370  33   No    2  100   23 0.368
3 64 31.2    5  189   33 0.583  29  Yes    3  158   13 0.295
4 64 33.2    4  117   27 0.230  24   No    1  96   27 0.289
5 66 38.1    3  115   39 0.150  28   No    1  114   36 0.289
6 68 38.5    2  100   25 0.324  26   No    7  129   49 0.439
7 70 27.4    1  116   28 0.204  21   No    0  124   20 0.254
8 70 33.1    4  91   32 0.446  22   No    9  123   44 0.374
9 70 35.4    9  124   33 0.282  34   No    6  134   23 0.542
10 72 25.6    1  157   21 0.123  24   No    4  99   17 0.294
11 72 37.7    5  95   33 0.370  27   No    6  103   32 0.324
12 74 25.9    9  134   33 0.460  81   No    8  126   38 0.162
13 74 25.9    1  95   21 0.673  36   No    8  126   38 0.162
14 78 27.6    5  88   30 0.258  37   No    6  125   31 0.565
15 78 27.6   10  122   31 0.512  45   No    6  125   31 0.565
16 78 39.4    2  112   50 0.175  24   No    4  112   40 0.236
17 88 34.5    1  117   24 0.403  40  Yes    4  127   11 0.598
  age.y type.y
1   31   No
2   21   No
3   24   No
4   21   No
5   21   No
6   43  Yes
7   36  Yes
8   40   No
9   29  Yes
10  28   No
11  55   No
12  39   No
13  39   No
14  49  Yes
15  49  Yes
16  38   No
17  28   No
[1] 17

有时,电子表格数据的格式很紧凑,可以给出每个主题的协变量,然后是该主题的所有观测值。 R的建模功能需要在单个列中进行观察。 考虑以下来自重复MRI脑测量的数据样本

 Status  Age  V1   V2   V3  V4
   P 23646 45190 50333 55166 56271
   CC 26174 35535 38227 37911 41184
   CC 27723 25691 25712 26144 26398
   CC 27193 30949 29693 29754 30772
   CC 24370 50542 51966 54341 54273
   CC 28359 58591 58803 59435 61292
   CC 25136 45801 45389 47197 47126

在每个主题上有两个协变量和多达四个测量值。 数据从 Excel 导出为 mr.csv 文件。

我们可以使用堆栈来帮助操纵这些数据以给出单个响应。

zz <- read.csv("mr.csv", strip.white = TRUE)
zzz <- cbind(zz[gl(nrow(zz), 1, 4*nrow(zz)), 1:2], stack(zz[, 3:6]))

结果为:

   Status  Age values ind
X1     P 23646 45190 V1
X2    CC 26174 35535 V1
X3    CC 27723 25691 V1
X4    CC 27193 30949 V1
X5    CC 24370 50542 V1
X6    CC 28359 58591 V1
X7    CC 25136 45801 V1
X11    P 23646 50333 V2
...

函数unstack的方向相反,可能对导出数据很有用。

另一种方法是使用函数重塑

> reshape(zz, idvar="id",timevar="var",
 varying=list(c("V1","V2","V3","V4")),direction="long")
  Status  Age var  V1 id
1.1   P 23646  1 45190 1
2.1   CC 26174  1 35535 2
3.1   CC 27723  1 25691 3
4.1   CC 27193  1 30949 4
5.1   CC 24370  1 50542 5
6.1   CC 28359  1 58591 6
7.1   CC 25136  1 45801 7
1.2   P 23646  2 50333 1
2.2   CC 26174  2 38227 2
...

重塑函数的语法比堆栈更复杂,但可以用于“long”表单中不止一列的数据。如果方向=“宽”,重塑还可以执行相反的转换。

到此这篇关于R语言数据重塑知识点总结的文章就介绍到这了,更多相关R语言数据重塑内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • R语言数据重塑知识点总结

    R 语言中的数据重塑是关于改变数据被组织成行和列的方式. 大多数时间 R 语言中的数据处理是通过将输入数据作为数据帧来完成的. 很容易从数据帧的行和列中提取数据,但是在某些情况下,我们需要的数据帧格式与我们接收数据帧的格式不同. R 语言具有许多功能,在数据帧中拆分,合并和将行更改为列,反之亦然. 于数据帧中加入列和行 我们可以使用 cbind() 函数连接多个向量来创建数据帧. 此外,我们可以使用 rbind() 函数合并两个数据帧. # Create vector objects. city

  • R语言关于多重回归知识点总结

    多元回归是线性回归到两个以上变量之间的关系的延伸. 在简单线性关系中,我们有一个预测变量和一个响应变量,但在多元回归中,我们有多个预测变量和一个响应变量. 多元回归的一般数学方程为 y = a + b1x1 + b2x2 +...bnxn 以下是所使用的参数的描述 y是响应变量. a,b1,b2 ... bn是系数. x1,x2,... xn是预测变量. 我们使用R语言中的lm()函数创建回归模型.模型使用输入数据确定系数的值. 接下来,我们可以使用这些系数来预测给定的一组预测变量的响应变量的值

  • R语言关于决策树知识点总结

    决策树是以树的形式表示选择及其结果的图.图中的节点表示事件或选择,并且图的边缘表示决策规则或条件.它主要用于使用R的机器学习和数据挖掘应用程序. 决策树的使用的例子是 预测电子邮件是垃圾邮件或非垃圾邮件,预测肿瘤癌变,或者基于这些因素预测贷款的信用风险.通常,使用观测数据(也称为训练数据)来创建模型.然后使用一组验证数据来验证和改进模型. R具有用于创建和可视化决策树的包.对于新的预测变量集合,我们使用此模型来确定R包"party"用于创建决策树. 安装R语言包 在R语言控制台中使用以

  • R语言数据可视化学习之图形参数修改详解

    1.图形参数的修改par()函数 我们可以通过使用par()函数来修改图形的参数,其调用格式为par(optionname=name, optionname=name,-).当par()不加参数时,返回当前图形参数设置的列表:par(no.readonly=T)将生成一个可以修改当前参数设置的列表.注意以这种方式修改参数设置,除非参数再次被修改,否则一直执行此参数设置. 例如现在想画出mtcars数据集中mpg的折线图,并用虚线代替实线,并将两幅图排列在同一幅图里,代码及图形如下: > opar

  • 详解R语言数据合并一行代码搞定

    数据的合并 需要的函数 cbind(),rbind(),bind_rows(),merge() 准备数据 我们先构造一组数据,以便下面的演示 > data1<-data.frame( + namea=c("海波","立波","秀波"), + value=c("一波","接","一波") + ) > data1 namea value 1 海波 一波 2 立波 接 3 秀

  • R语言数据框合并(merge)的几种方式小结

    merge data frames (inner, outer, left, right) 数据 > df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3))) > df1 > CustomerId Product 1 1 Toaster 2 2 Toaster 3 3 Toaster 4 4 Radio 5 5 Radio 6 6 R

  • R语言基本语法知识点

    我们将开始学习R语言编程,首先编写一个"你好,世界! 的程序. 根据需要,您可以在R语言命令提示符处编程,也可以使用R语言脚本文件编写程序.让我们逐个体验不同之处. 命令提示符 如果你已经配置好R语言环境,那么你只需要按一下的命令便可轻易开启命令提示符 $ R 这将启动R语言解释器,你会得到一个提示 > 在那里你可以开始输入你的程序,具体如下. > myString <- "Hello, World!" > print ( myString) [1]

  • R语言决策基础知识点详解

    决策结构要求程序员指定要由程序评估或测试的一个或多个条件,以及如果条件被确定为真则要执行的一个或多个语句,如果条件为假则执行其他语句. 以下是在大多数编程语言中的典型决策结构的一般形式 R提供以下类型的决策语句. 单击以下链接以检查其详细信息. Sr.No. 声明和描述 1 if语句 if语句由一个布尔表达式后跟一个或多个语句组成. 2 if ... else语句 if语句后面可以有一个可选的else语句,当布尔表达式为false时执行. 3 switch语句 switch语句允许根据值列表测试

  • R语言函数基础知识点总结

    函数是一组组合在一起以执行特定任务的语句. R 语言具有大量内置函数,用户可以创建自己的函数. 在R语言中,函数是一个对象,因此R语言解释器能够将控制传递给函数,以及函数完成动作所需的参数. 该函数依次执行其任务并将控制返回到解释器以及可以存储在其他对象中的任何结果. 函数定义 使用关键字函数创建 R 语言的函数. R 语言的函数定义的基本语法如下 function_name <- function(arg_1, arg_2, ...) { Function body } 函数组件 函数的不同部

  • R语言数据框中的负索引介绍

    以R语言自带的mtcars数据框为例: 这是原始的mtcars数据: 这里只列出了前面几行数据. 然后负索引mtcars[,-2:-3],得到的结果 删除了第二列和第三列数据 所以R语言数据框中的负索引是指删除数据框中对应的列(或者行) ps:这和Python里面的规则好像不太一样,Python里的负索引好像是指倒数第几列(或者第几行),这里这两个软件区别还挺大的~~写个笔记提醒一下自己~ 补充:R语言中的负整数索引 看代码吧~ > x<-matrix(c(1,2,3,4,5,6,7,8,9)

随机推荐