r - 在 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
解决方案
使用您建议的代码的最简单方法是使用该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'))
如果任何方法对您不起作用,请告诉我,我将尝试澄清该方法或纠正错误。
推荐阅读
- statistics - 杠杆 5 次,您将在第 5 次拉动杠杆时获得第三个绿灯
- vue.js - Vuetify - 更改断点大小
- c# - JWT - 解密令牌但不验证
- php - 使用 PayPal PHP SDK 在 PayPal Sandbox 上执行支付时,得到 Http 响应代码 400
- c++ - Makefile 忽略特定行
- c# - 从工具条中打开表单的代码,但一个代码中的相同代码不能执行“.show();”
- reactjs - 反应 redux,thunk 完成事件过早发生
- css - 背景图像不会缩放以适合页面
- android - 一旦打开片段,ViewModelProvider 就会导致崩溃。我该如何解决这个问题?
- html - VS Code 中的红色标题标签错误 - HTML/CSS