【问题标题】:(R) renaming columns from names to Response time series(R) 将列从名称重命名为响应时间序列
【发布时间】:2020-09-20 08:35:23
【问题描述】:

我需要将名称为“V4、V5 等... V503”的列重命名为以两毫秒为增量的时间序列(即“-100-98、97-95 等...压缩到 900 毫秒” ”)。

对于包含从 -100 毫秒到 900 毫秒的大脑数据的列,这些增量为 2 秒。我试过使用 names() 和 substring() 但 R 不喜欢数字方面。任何人都可以帮忙吗?谢谢!

【问题讨论】:

  • 你能分享你试过的代码吗?听起来你在 zip 到 900 的轨道上。这里有一些有用的答案关于 R stackoverflow.com/questions/9281323/zip-or-enumerate-in-r 中的枚举
  • 您也可以使用as.String(x)将整数转换为字符串
  • 您能否在帖子中明确说明您拥有什么以及想要什么? -100-9897-95系列如何达到900?

标签: r


【解决方案1】:

您需要使用as.character 将数字转换为字符串。您可以只粘贴偏移序列 将它们的范围放在一起,它将使用- 分隔符将数据强制转换为字符串。然后你需要 用gsub 删除-- 的实例,这样负值就不会有双倍-。请注意,在对这些列进行子集化时,您需要使用反引号。

sq <- seq(-100, 898, by=2)
sq2 <- seq(-98, 900, by=2)

nams <- paste(sq, sq2, sep='-')
nams <- gsub('--', '-', nams)

# generating fake dataframe
n <- length(sq)
df <- matrix(data=rep(1, n), nrow = 1, ncol=n)
df <- as.data.frame(df)

# replace names

colnames(df) <- nams

head(df)

【讨论】:

  • 我也被困在这个问题上,很高兴看到你优雅的解决方案@at80。不过,我建议 OP 避免使用 '-' 作为分隔符,并在第三行中使用 nams &lt;- paste(sq, sq2, sep=':')。有一个单独的负数会让眼睛感到困惑。
猜你喜欢
  • 2015-06-27
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多