![](/img/trans.png)
[英]List the names and row numbers of missing data in a data.frame in R?
[英]Changing row names in a data_frame from letters to numbers in R
我有一组数据集,这些数据集来自应用于多个不同国家的调查,我希望将其合并以创建单个合并的data.frame。 不幸的是,对于其中的一个,变量名与其他变量名不同,但是遵循一种模式:就像在其他变量名中一样,变量名类似于“ VAR1”,“ VAR2”等,在此变量名是“ VAR_a”,“ VAR_b”等
到目前为止,我用于解决此问题的代码如下:
names (df) <- gsub("_a", "01", names(df))
names (df) <- gsub("_b", "02", names(df))
names (df) <- gsub("_c", "03", names(df))
names (df) <- gsub("_d", "04", names(df))
names (df) <- gsub("_e", "05", names(df))
names (df) <- gsub("_f", "06", names(df))
names (df) <- gsub("_g", "07", names(df))
直到第14个字母/数字(没有其他变量超出此范围),因此它可以变得与其他data.frames相似。
我知道应该有一种方法可以用几行甚至一行代码来做到这一点,但是我找不到在gsub本身中执行迭代或任何参数的方法。 谁能帮我?
我在想也许是这样的:
names (df) <- gsub ("_[a-z]", "[1-9]", names(df))
但这当然行不通。 我需要R才能理解我希望每个字母都变成对应的数字(“ _a”变成1,依此类推)
感谢任何帮助。
如果您只想要一个gsub版本,该版本可以在模式和替换上进行转换,则stringr
拥有一个称为str_replace
。 以下代码在任何版本的R中也使用letters
。
library(stringr)
df <- data.frame(matrix(0, nrow = 5, ncol = 10))
colnames(df) <- paste0("abcd2345p_", letters[1:10])
colnames(df)
> [1] "abcd2345p_a" "abcd2345p_b" "abcd2345p_c" "abcd2345p_d" "abcd2345p_e"
[6] "abcd2345p_f" "abcd2345p_g" "abcd2345p_h" "abcd2345p_i" "abcd2345p_j"
str_replace(colnames(df), paste0("_", letters[1:ncol(df)], "$"), as.character(1:ncol(df)))
> [1] "abcd2345p1" "abcd2345p2" "abcd2345p3" "abcd2345p4" "abcd2345p5"
[6] "abcd2345p6" "abcd2345p7" "abcd2345p8" "abcd2345p9" "abcd2345p10"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.