服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - R语言 - R语言数据重塑知识点总结

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

2022-01-04 15:35w3cschool R语言

在本篇文章里小编给大家整理的是一篇关于R语言数据重塑的相关知识点内容,有兴趣的朋友们可以跟着学习下。

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

于数据帧中加入列和行

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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)

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# # # # 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”)的值合并两个数据集。 在选择这两列用于合并时,其中这两个变量的值在两个数据集中匹配的记录被组合在一起以形成单个数据帧。

?
1
2
3
4
5
6
7
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)

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  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脑测量的数据样本

?
1
2
3
4
5
6
7
8
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 文件。

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

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

结果为:

?
1
2
3
4
5
6
7
8
9
10
   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的方向相反,可能对导出数据很有用。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
> 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语言数据重塑内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.w3cschool.cn/r/r_data_reshaping.html

延伸 · 阅读

精彩推荐
  • R语言R语言可视化存储矢量图实现方式

    R语言可视化存储矢量图实现方式

    这篇文章主要为大家介绍了R语言存储矢量图的实现方式过程,有需要的朋友可以借鉴参考下,希望能够有所你帮助,祝大家多多进步,早日升职加薪...

    Kanny广小隶9392022-01-20
  • R语言聊聊R语言中Legend 函数的参数用法

    聊聊R语言中Legend 函数的参数用法

    这篇文章主要介绍了聊聊R语言中Legend 函数的参数用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Gavin姓陈6352021-12-28
  • R语言R语言编程学习绘制动态图实现示例

    R语言编程学习绘制动态图实现示例

    这篇文章主要介绍了R语言编程学习绘制动态图实现示例,有需要的的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    微小冷7652022-01-18
  • R语言R studio 批量注释的快捷方式

    R studio 批量注释的快捷方式

    这篇文章主要介绍了R studio 批量注释的快捷方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    JasonKQLin13342022-01-04
  • R语言R语言-使用ifelse进行数据分组

    R语言-使用ifelse进行数据分组

    这篇文章主要介绍了R语言-使用ifelse进行数据分组,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    小力丸12042022-01-10
  • R语言R语言中c()函数与paste()函数的区别说明

    R语言中c()函数与paste()函数的区别说明

    这篇文章主要介绍了R语言中c()函数与paste()函数的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    yiyu_j11152022-01-12
  • R语言R语言创建矩阵的实现方法

    R语言创建矩阵的实现方法

    这篇文章主要介绍了R语言创建矩阵的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随...

    hjk_caesar9462021-12-27
  • R语言R语言绘制散点图实例分析

    R语言绘制散点图实例分析

    在本篇文章里小编给大家整理的是一篇关于R语言绘制散点图实例分析内容,有需要的朋友们可以学习下。...

    w3cschool6942022-01-06