在我的数据框中,许多列名称以".y"结尾,如示例中所示:
dat <- data.frame(x1=sample(c(0:1)), id=sample(10), av1.y = sample(10) , av2.y = sample(10) , av3.y = sample(10),av4.y=sample(10))
dat
Run Code Online (Sandbox Code Playgroud)
我想摆脱以.y结尾的所有列名的最后两个字符,并保持其他字符不变,以便拥有这样的数据帧:
colnames(dat) <- c("x1","id","av1","av2","av3","av4")
dat
Run Code Online (Sandbox Code Playgroud)
如何在不重新键入所有列名的情况下实现此目的?我找到了一种方法来处理单个字符串,但不知道如何在一系列字符串上重复执行此操作:
library(stringi)
stri_sub("av3.y",1,3)
Run Code Online (Sandbox Code Playgroud) 我有一个data.table DT如下.
DT <- structure(list(V1 = structure(1:3, .Label = c("S01", "S02", "S03" ), class = "factor"), V2 = structure(c(1L, 3L, 2L), .Label = c("Alan Hal << Guy John", "Bruce Dick Jean-Paul << Damien", "Jay << Barry Wally Bart"), class = "factor")), .Names = c("V1", "V2"), row.names = c(NA, -3L), class = "data.frame")
# DT
# V1 V2
# 1 S01 Alan Hal << Guy John
# 2 S02 Jay << Barry Wally Bart
# 3 S03 Bruce Dick Jean-Paul …Run Code Online (Sandbox Code Playgroud) 我正在尝试将特殊字符转换为R中的ASCII.我在这个问题中尝试使用Hadley的建议:
stringi::stri_trans_general('Jos\xe9', 'latin-ascii')
Run Code Online (Sandbox Code Playgroud)
但我得到了"乔斯".我正在使用stringi v1.1.1.
我正在运行Mac.我运行Windows机器的朋友似乎得到了"Jose"的理想结果.
知道发生了什么事吗?
是否有一种简单的方法可以在R中的字符向量的每个元素中用点替换破折号?
input
c("T-A-B", "C-L1")
output
c("T.A.B", "C.L1")
Run Code Online (Sandbox Code Playgroud)
在stringi包中寻找帮助但找不到答案.有stri_substitute功能,但我不知道如何使用它.