在 R 中重命名数据
Renaming data in R
我是 R 的新手,正在尝试制作一些数字,但在重命名数据时遇到了问题。基本上,我有一个来自 SPSS 的超大数据集,我将其导入 R 并创建了一个较小的数据 table,其中包含一个我试图查看的变量。我已成功将我的数据转换为长格式,但我的时间列未按我希望的方式显示。
当我将数据转换为长格式时,我制作了一个数据 Time
列,该列中的数据显示 TIME1COMPOSITE
、TIME2COMPOSITE
、TIME3COMPOSITE
-这是 SPSS 文件中的原始列名称。我更希望它改为阅读 Time1
、Time2
或 Time3
(这样它在我制作的图表的轴标签上看起来更好)。有没有简单的方法可以做到这一点?是重命名数据点还是只重命名图表上的标签?
这是我的代码的示例:
dt<- data.table(dt)
#Putting into long format
dt <- melt(dt, measure.vars = c("TIME1COMPOSITE", "TIME2COMPOSITE", "TIME3COMPOSITE"), variable.name = "Time", value.name = "CompositeScore")
#Computing means
dt[, meanCompositeScore:= mean(CompositeScore), by=c("Condition", "Time")]
#Plotting
plot <- ggplot(dt, aes(x=Time, y=meanCompositeScore, color=Condition)) + geom_point()
plot
使用您建议的代码的最简单方法是使用 colnames()
函数更改开头的列名。
colnames(dt) <- c("colname1","colname2", ...)
另一种使用 tidy 格式的方法是使用 rename()
函数(来自 dplyr)。
dt %>%
rename(Time1 = TIME1COMPOSITE, Time2 = TIME2COMPOSITE, Time3 = TIME3COMPOSITE)
要在计算完成后更改名称,您可以将时间转换为一个因素并重新标记它们。我们可以使用as.factor()
函数来转换数组
dt$Time <- as.factor(dt$Time)
revalue(dt$Time, c("Time1" = "TIME1COMPOSITE", "Time2" = "TIME2COMPOSITE", "Time3" = "TIME3COMPOSITE"))
要在图表中添加标签,我们可以将其转换为一个因子,并使用 as.factor()
函数在我们使用图表的线上设置水平。
levels = c("Time1", "Time2", "Time3")
plot <- ggplot(dt, aes(x=as.factor(Time, levels = levels), y=meanCompositeScore, color=Condition)) + geom_point()
最后一种方法是使用 scale_x_discrete()
ggplot 函数重新标记图形标签而不是值。
plot <- ggplot(dt, aes(x=Time, y=meanCompositeScore, color=Condition)) +
geom_point() +
scale_x_discrete(labels = c('Time1','Time2','Time3'))
如果有任何方法对您不起作用,请告诉我,我会尝试澄清方法或纠正错误。
我是 R 的新手,正在尝试制作一些数字,但在重命名数据时遇到了问题。基本上,我有一个来自 SPSS 的超大数据集,我将其导入 R 并创建了一个较小的数据 table,其中包含一个我试图查看的变量。我已成功将我的数据转换为长格式,但我的时间列未按我希望的方式显示。
当我将数据转换为长格式时,我制作了一个数据 Time
列,该列中的数据显示 TIME1COMPOSITE
、TIME2COMPOSITE
、TIME3COMPOSITE
-这是 SPSS 文件中的原始列名称。我更希望它改为阅读 Time1
、Time2
或 Time3
(这样它在我制作的图表的轴标签上看起来更好)。有没有简单的方法可以做到这一点?是重命名数据点还是只重命名图表上的标签?
这是我的代码的示例:
dt<- data.table(dt)
#Putting into long format
dt <- melt(dt, measure.vars = c("TIME1COMPOSITE", "TIME2COMPOSITE", "TIME3COMPOSITE"), variable.name = "Time", value.name = "CompositeScore")
#Computing means
dt[, meanCompositeScore:= mean(CompositeScore), by=c("Condition", "Time")]
#Plotting
plot <- ggplot(dt, aes(x=Time, y=meanCompositeScore, color=Condition)) + geom_point()
plot
使用您建议的代码的最简单方法是使用 colnames()
函数更改开头的列名。
colnames(dt) <- c("colname1","colname2", ...)
另一种使用 tidy 格式的方法是使用 rename()
函数(来自 dplyr)。
dt %>%
rename(Time1 = TIME1COMPOSITE, Time2 = TIME2COMPOSITE, Time3 = TIME3COMPOSITE)
要在计算完成后更改名称,您可以将时间转换为一个因素并重新标记它们。我们可以使用as.factor()
函数来转换数组
dt$Time <- as.factor(dt$Time)
revalue(dt$Time, c("Time1" = "TIME1COMPOSITE", "Time2" = "TIME2COMPOSITE", "Time3" = "TIME3COMPOSITE"))
要在图表中添加标签,我们可以将其转换为一个因子,并使用 as.factor()
函数在我们使用图表的线上设置水平。
levels = c("Time1", "Time2", "Time3")
plot <- ggplot(dt, aes(x=as.factor(Time, levels = levels), y=meanCompositeScore, color=Condition)) + geom_point()
最后一种方法是使用 scale_x_discrete()
ggplot 函数重新标记图形标签而不是值。
plot <- ggplot(dt, aes(x=Time, y=meanCompositeScore, color=Condition)) +
geom_point() +
scale_x_discrete(labels = c('Time1','Time2','Time3'))
如果有任何方法对您不起作用,请告诉我,我会尝试澄清方法或纠正错误。