如何堆叠原始数据并在R中创建新变量
这是我的一个小样本数据如何堆叠原始数据并在R中创建新变量,r,R,这是我的一个小样本数据 AB AN AQ AP AA 1 O1 N 12 13 2 K1 B 22 16 我想生成这个表 AB AN AQ New AP 1 O1 N 1 12 1 O1 N 2 13 2 K1 B 1 22 2 K1 B 2 16 逻辑是将相同的数据叠加在AB、AN和AQ中,然后生成一个新的颜色,该颜色得到1,然后是AP。 在这个raw下,相同的数据但新列得到2,然后是AA。因此,
AB AN AQ AP AA
1 O1 N 12 13
2 K1 B 22 16
我想生成这个表
AB AN AQ New AP
1 O1 N 1 12
1 O1 N 2 13
2 K1 B 1 22
2 K1 B 2 16
逻辑是将相同的数据叠加在AB、AN和AQ中,然后生成一个新的颜色,该颜色得到1,然后是AP。
在这个raw下,相同的数据但新列得到2,然后是AA。因此,新列是1和2您可以获取长格式的数据,然后根据唯一的列值生成新列
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = c(AP, AA),
values_to = 'AP',
names_to = 'New') %>%
mutate(New = match(New, unique(New)))
# AB AN AQ New AP
# <int> <chr> <chr> <int> <int>
#1 1 O1 N 1 12
#2 1 O1 N 2 13
#3 2 K1 B 1 22
#4 2 K1 B 2 16
库(dplyr)
图书馆(tidyr)
df%>%
枢轴长度(cols=c(AP,AA),
值_to='AP',
名称_to='New')%>%
变异(新=匹配(新,唯一(新)))
#AB AN AQ新AP
#
#11O1n12
#21O1N2 13
#3 2 K1 B 1 22
#4 2 K1 B 2 16
数据
df <- structure(list(AB = 1:2, AN = c("O1", "K1"), AQ = c("N", "B"),
AP = c(12L, 22L), AA = c(13L, 16L)),
class = "data.frame", row.names = c(NA, -2L))
df <- structure(list(AB = 1:2, AN = c("O1", "K1"), AQ = c("N", "B"),
AP = c(12L, 22L), AA = c(13L, 16L)),
class = "data.frame", row.names = c(NA, -2L))
df从base R
names(df)[4:5] <- paste0("AP", 1:2)
reshape(df, direction = "long", varying = 4:5, sep= "", timevar = "New")
# AB AN AQ New AP id
#1.1 1 O1 N 1 12 1
#2.1 2 K1 B 1 22 2
#1.2 1 O1 N 2 13 1
#2.2 2 K1 B 2 16 2
名称(df)[4:5]