如何修改数据框列?
How to modify dataframe column?
dataframe 列组件区域,x1 平均值,x2 平均值,x1 se,x2 se。
我想要更改折线图 (ggplot) 的数据框
最后,我制作列区域、部分、均值、se。 (部分为新列)
如何使用代码?
#data.frame = temp
region x1 x2 y1 y2
A 1 2 0.1 0.2
B 3 4 0.3 0.2
#modified data.frame
region part mean se
A x1 1 0.1
A X2 2 0.2
B X1 3 0.3
B X2 4 0.2
请帮帮我..
我们可以使用 data.table
中的 melt
,它可以在 measure
参数 [=17= 中采用多列从 'wide' 重塑为 'long' ]
library(data.table)
melt(setDT(temp), measure = patterns("^x\d+", "^y\d+"),
value.name = c('mean', 'se'), variable.name = 'part')[,
part := paste0("X", part)][order(region)]
# region part mean se
#1: A X1 1 0.1
#2: A X2 2 0.2
#3: B X1 3 0.3
#4: B X2 4 0.2
或者我们可以使用 tidyverse
因为它对于 ggplot
的管道很有用
library(ggplot2)
gather(temp, key, val, x1:y2) %>%
separate(key, into = c('key1', 'part'), sep="(?<=[a-z])(?=[0-9])") %>%
spread(key1, val) %>%
rename_at(3:4, ~ c('mean', 'se')) %>%
mutate(part = paste0("X", part))
# region part mean se
#1 A X1 1 0.1
#2 A X2 2 0.2
#3 B X1 3 0.3
#4 B X2 4 0.2
使用基础 R:
A = reshape(dat,t(matrix(2:5,2)),idvar = 1,dir="long",ids=dat$region)
setNames(transform(A,time=paste0("X",time),row.names=NULL)[order(A$region),],
c(names(dat)[1],"Part","mean","se"))
region Part mean se
1 A X1 1 0.1
3 A X2 2 0.2
2 B X1 3 0.3
4 B X2 4 0.2
dataframe 列组件区域,x1 平均值,x2 平均值,x1 se,x2 se。
我想要更改折线图 (ggplot) 的数据框
最后,我制作列区域、部分、均值、se。 (部分为新列)
如何使用代码?
#data.frame = temp
region x1 x2 y1 y2
A 1 2 0.1 0.2
B 3 4 0.3 0.2
#modified data.frame
region part mean se
A x1 1 0.1
A X2 2 0.2
B X1 3 0.3
B X2 4 0.2
请帮帮我..
我们可以使用 data.table
中的 melt
,它可以在 measure
参数 [=17= 中采用多列从 'wide' 重塑为 'long' ]
library(data.table)
melt(setDT(temp), measure = patterns("^x\d+", "^y\d+"),
value.name = c('mean', 'se'), variable.name = 'part')[,
part := paste0("X", part)][order(region)]
# region part mean se
#1: A X1 1 0.1
#2: A X2 2 0.2
#3: B X1 3 0.3
#4: B X2 4 0.2
或者我们可以使用 tidyverse
因为它对于 ggplot
library(ggplot2)
gather(temp, key, val, x1:y2) %>%
separate(key, into = c('key1', 'part'), sep="(?<=[a-z])(?=[0-9])") %>%
spread(key1, val) %>%
rename_at(3:4, ~ c('mean', 'se')) %>%
mutate(part = paste0("X", part))
# region part mean se
#1 A X1 1 0.1
#2 A X2 2 0.2
#3 B X1 3 0.3
#4 B X2 4 0.2
使用基础 R:
A = reshape(dat,t(matrix(2:5,2)),idvar = 1,dir="long",ids=dat$region)
setNames(transform(A,time=paste0("X",time),row.names=NULL)[order(A$region),],
c(names(dat)[1],"Part","mean","se"))
region Part mean se
1 A X1 1 0.1
3 A X2 2 0.2
2 B X1 3 0.3
4 B X2 4 0.2