[英]R tidyr::unite How to prevent blank columns from being deleted?
我正在尝试创建一个 .txt 文件来提交国家死亡指数 (NDI) 查询(因此是 txt 格式)。 在其他数据中,需要提交姓氏和名字。 名字应该被截断为 20 个字符,名字应该被截断为 15 个字符。
请注意,我首先将查询保存为 .csv,然后将 .csv 保存为 Excel(不是 R)中的 .txt
我正在做一些非常低效的事情,但这不是给我带来麻烦的部分。
### Last name
column_1 <- substring(cases_alive$last, 1, 1)
column_2 <- substring(cases_alive$last, 2, 2)
column_3 <- substring(cases_alive$last, 3, 3)
column_4 <- substring(cases_alive$last, 4, 4)
column_5 <- substring(cases_alive$last, 5, 5)
column_6 <- substring(cases_alive$last, 6, 6)
column_7 <- substring(cases_alive$last, 7, 7)
column_8 <- substring(cases_alive$last, 8, 8)
column_9 <- substring(cases_alive$last, 9, 9)
column_10 <- substring(cases_alive$last, 10, 10)
column_11 <- substring(cases_alive$last, 11, 11)
column_12 <- substring(cases_alive$last, 12, 12)
column_13 <- substring(cases_alive$last, 13, 13)
column_14 <- substring(cases_alive$last, 14, 14)
column_15 <- substring(cases_alive$last, 15, 15)
column_16 <- substring(cases_alive$last, 16, 16)
column_17 <- substring(cases_alive$last, 17, 17)
column_18 <- substring(cases_alive$last, 18, 18)
column_19 <- substring(cases_alive$last, 19, 19)
column_20 <- substring(cases_alive$last, 20, 20)
### First name
column_21 <- substring(cases_alive$first, 1, 1)
column_22 <- substring(cases_alive$first, 2, 2)
column_23 <- substring(cases_alive$first, 3, 3)
column_24 <- substring(cases_alive$first, 4, 4)
column_25 <- substring(cases_alive$first, 5, 5)
column_26 <- substring(cases_alive$first, 6, 6)
column_27 <- substring(cases_alive$first, 7, 7)
column_28 <- substring(cases_alive$first, 8, 8)
column_29 <- substring(cases_alive$first, 9, 9)
column_30 <- substring(cases_alive$first, 10, 10)
column_31 <- substring(cases_alive$first, 11, 11)
column_32 <- substring(cases_alive$first, 12, 12)
column_33 <- substring(cases_alive$first, 13, 13)
column_34 <- substring(cases_alive$first, 14, 14)
column_35 <- substring(cases_alive$first, 15, 15)
### Create NDI data frame
ndi <- data.frame(column_1, column_2, column_3, column_4, column_5, column_6, column_7, column_8, column_9, column_10, ### Last name
column_11, column_12, column_13, column_14, ### Last name
column_15, column_16, column_17, column_18, column_19, column_20, ### Last name
column_21, column_22, column_23, column_24, column_25, column_26, column_27, column_28, # First name
column_29, column_31, column_32, column_33, column_34, column_35) # First name
现在我想合并:
ndi <- tidyr::unite(ndi, col, column_1, column_2, column_3, column_4, column_5, column_6, column_7, column_8, column_9, column_10,
column_11, column_12, column_13, column_14,
column_15, column_16, column_17, column_18, column_19,column_20,
column_21, column_22, column_23, column_24, column_25, column_26, column_27, column_28,
column_29, column_31, column_32, column_33, column_34, column_35, sep = "", na.rm = FALSE)
问题:正在删除空白“列”。 例如,如果某人的姓有 5 个字符(“smith”),而他们的名字有 4 个字符(“john”),则输出是“smithjohn”而不是“smith john”。 换句话说,空格正在丢失。
很抱歉这个长期杂乱无章的问题。 我显然是编码新手。 非常感谢。
使用sprintf
怎么样?
ndi <- data.frame(col = sprintf('%20s %15s',cases_alive$last, cases_alive$first))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.