【发布时间】:2019-09-03 16:54:49
【问题描述】:
给定下面的数据框包含三个变量,每个变量重复三次,名称完全相同,我想要一个函数,根据名称和位置重命名每组变量的每个元素都具有相同的名称,通过 for示例添加.m 第一次出现每组同名变量中的每个变量,.l 第二次出现,.u 第三次出现。
我知道我可以使用this、this、this 和other 解决方案来做我想做的manually。但就我而言,我的一些变量具有相同的名称,因此对我来说似乎显而易见的唯一选择是使用列位置来识别和重命名变量,这对于大型数据集是不可行的。
#data
dt<-structure(list(general = c(0.348886829202466,
0.203589313542743, 0.90655704224777, 0.344599044114144, 0.301264059075478
), vocation = c(0.90007128724776, 0.25093350439507,
0.840003175556854, 0.0763147760239838, 0.765717248505423), general = c(8.48536430252404,
0.61215079555521, 0.33908999482637, 0.959941654100972, 0.577845916408486,
0.551543184240344), vocation = c(208.71134987404, 1.68880630570487,
0.428696219910234, 0.890082828242642, 0.16628759312575, 1.49119733964464
), general = c(239.145164960882, 1.07406919703872, 0.564774361632725,
1.01646993662232, 0.968969324823085, 1.00974502240828), vocation = c(5980.31502662087,
3.16871205491912, 0.732387049741986, 0.943148150133152, 0.362335645443876,
2.90403475970219)), class = "data.frame", row.names = c(
"sesmiddle", "seshigh", "write", "schtypprivate", "honorsenrolled"
))
#expected 输出
general.m general.l general.u vocation.m vocation.l vocation.u
sesmiddle 0.3488868 0.6121508 1.0740692 0.90007129 1.6888063 3.1687121
seshigh 0.2035893 0.3390900 0.5647744 0.25093350 0.4286962 0.7323870
write 0.9065570 0.9599417 1.0164699 0.84000318 0.8900828 0.9431482
schtypprivate 0.3445990 0.5778459 0.9689693 0.07631478 0.1662876 0.3623356
honorsenrolled 0.3012641 0.5515432 1.0097450 0.76571725 1.4911973 2.9040348
提前感谢您的帮助。如果有任何不清楚的地方,请在 cmets 中告诉我。
【问题讨论】:
标签: r function dataframe data.table tidyverse