所以我得到的数据如下所示:
id year principal interest
1: 011000600 2013 0.00 0.00
2: 011000600 2014 544.03 0.00
3: 011000700 2013 0.00 0.00
4: 011000700 2014 0.01 0.00
5: 011000800 2013 363.44 12.79
6: 011000800 2014 2005.98 0.00
7: 011000900 2013 0.00 0.00
8: 011000900 2014 0.00 0.00
9: 011001000 2013 0.00 0.00
10: 011001000 2014 0.00 0.00
11: 011001100 2013 0.00 0.00
12: 011001100 2014 1723.24 0.00
13: 011001560 2013 0.00 0.00
14: 011001560 2014 0.00 0.00
15: 011001650 2013 0.00 0.00 …Run Code Online (Sandbox Code Playgroud) 这是参考这个问题.
我想重命名一个大数据框中的列子集.我希望下面的代码来重命名列X4,X5,X6和X7以gradek,grade1,grade2,和grade3分别为:
set.seed(1)
in.df <- data.frame( matrix( rnorm(60), ncol=10) )
names(in.df) <- ifelse( names(in.df) %in% c('X4', 'X5', 'X6', 'X7'),
paste('grade', c('k',1:3), sep=''),
names(in.df) )
Run Code Online (Sandbox Code Playgroud)
然而,
> names(in.df)
[1] "X1" "X2" "X3" "grade3" "gradek" "grade1" "grade2" "X8"
[9] "X9" "X10"
Run Code Online (Sandbox Code Playgroud)
即使
> paste('grade', c('k',1:3), sep='')
[1] "gradek" "grade1" "grade2" "grade3"
Run Code Online (Sandbox Code Playgroud)
显示订单未保留.这个线程,建议使用match而不是%in%工作,但在这种情况下它不会.(也许在其他版本的R中也是如此.在我安装的版本(2.15.3)中,帮助页面match建议%in%通过match这样定义,因此将其切换起来没有任何帮助.) …
在SO的帮助下,我现在有一种方法可以重命名数据框中的所有变量,但选定的子集除外.我目前正在使用这种方法,请看看打击(感谢flodel).
我想编写一个函数,我可以定义1)我的数据,2)变量向量和3)我想要添加到函数中未选择的变量的前缀(参见下面的尝试).我错误地认为这很容易,但我很难让功能发挥作用.
这是我尝试编写函数,这显然不起作用.此外,如果有人会推荐一个网站或一些我可以阅读的文字,以便更好地了解如何编写功能.
baRadd <- function(df, vector, suffix){names(df) <-
ifelse(names(df) %in% vector,names(df),
paste(suffix, names(df), sep = ".")) }
data(mtcars)
temp.mtcars <- mtcars
baRadd(temp.mtcars, c("mpg", "cyl", "disp"), "baR")
Run Code Online (Sandbox Code Playgroud)
初始函数形式为flodel
data(mtcars)
# head(mtcars)
temp.mtcars <- mtcars
names(temp.mtcars) <- ifelse(names(mtcars) %in% c("mpg", "cyl", "disp"),
names(mtcars),
paste("baR", names(mtcars), sep = "."))
str(temp.mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 …Run Code Online (Sandbox Code Playgroud)