首页 > 解决方案 > 在 R 中重命名数据

问题描述

我对 R 相当陌生,正在尝试制作一些数字,但在重命名数据时遇到了麻烦。基本上,我有一个来自 SPSS 的超大数据集,我将其导入 R 并创建了一个较小的数据表,其中包含我要查看的一个变量。我成功地将我的数据转换为长格式,但我的时间列没有按照我想要的方式表示。

当我将数据转换为长格式时,我创建了一个数据Time列,该列中的数据显示TIME1COMPOSITE, TIME2COMPOSITE, TIME3COMPOSITE- 这是 SPSS 文件中的原始列名。我希望它改为阅读Time1, Time2, or 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

标签: rrenamedata-wrangling

解决方案


使用您建议的代码的最简单方法是使用该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'))

如果任何方法对您不起作用,请告诉我,我将尝试澄清该方法或纠正错误。


推荐阅读