การลบอักขระตัวแรกออกจากชื่อคอลัมน์หลายคอลัมน์

คำถามของฉันเกี่ยวกับการเปลี่ยนชื่อคอลัมน์หลายรายการพร้อมกัน

ฉันมี dataframe ชื่อ 'การเติบโต' มี 46 คอลัมน์

คอลัมน์ 2:46 ทั้งหมดตั้งชื่อเป็นวันที่ แต่วันที่ทั้งหมดมีเครื่องหมาย X อยู่ข้างหน้า เช่น 'X1981'.

โดยปกติแล้ว ฉันต้องการลบ X ออกจากชื่อคอลัมน์ทั้งหมด

ฉันไม่เข้าใจว่าทำไมสิ่งต่อไปนี้ไม่ทำงาน:

colnames(growth[ ,2:length(growth)]) <- substring(colnames(growth[ ,2:length(growth)]),2)

โปรดช่วยฉันด้วยข้อมูลเชิงลึกบางอย่าง


person Wade Byron Profe    schedule 24.06.2018    source แหล่งที่มา
comment
อาจเกี่ยวข้องกับสิ่งนี้   -  person David Arenburg    schedule 24.06.2018
comment
จริงๆ แล้ว คุณควรปรับรูปแบบข้อมูลแบบกว้างให้เป็นรูปแบบยาว โดยมีคอลัมน์ ปี และค่าอยู่ในคอลัมน์ที่อยู่ติดกัน สิ่งนี้จะปรับขนาดได้ดีขึ้นและการคำนวณก็ง่ายกว่ามาก   -  person Parfait    schedule 24.06.2018
comment
อาจซ้ำกันของ ความแตกต่างระหว่าง `names(df[1]) ‹- ` และ `names(df) [1] ‹- `   -  person Rui Barradas    schedule 24.06.2018


คำตอบ (1)


ไม่เป็นไร ฉันเปลี่ยนคำสั่งเป็น...

names(growth)[2:46] <- substring(names(growth)[2:46],2)

...และตอนนี้ก็ใช้งานได้แล้ว เห็นได้ชัดว่ามีบางอย่างเกี่ยวข้องกับวิธีที่ฉันแบ่งย่อยคอลัมน์

person Wade Byron Profe    schedule 24.06.2018
comment
งานดี. โปรดทราบว่าหากการเติบโตมี 46 คอลัมน์ คุณสามารถแทนที่ 2:46 ด้วย -1 ที่กระชับยิ่งขึ้นได้ - person sindri_baldur; 24.06.2018
comment
นั่นอาจเป็นเพราะการทำ colnames(growth[, 2:46]) <- ... คุณจะสร้างเซตย่อยของ data.frame ดั้งเดิมของคุณ มากกว่าที่คุณสร้างเวกเตอร์อักขระด้วยการเรียก substring() ของคุณ และหลังจากนั้น คุณกำหนดเวกเตอร์อักขระนี้ให้กับเซตย่อยที่สร้างไว้ก่อนหน้านี้คือ growth ดังนั้นเอาต์พุตจึงเป็นเวกเตอร์อักขระของชื่อ (ที่ต้องการ) หากคุณใส่โค้ดของคุณในวงเล็บ คุณจะเห็นข้อความดังนี้: [1] "2" "3" "4"..."45" "46" อย่างไรก็ตาม ฉันเชื่อว่าคนที่มีความรู้เรื่อง R ดีกว่าจะอธิบายได้ดีกว่าฉัน หรือจะแก้ไขฉันถ้าฉันทำผิด - person utubun; 24.06.2018