简体   繁体   English

R tidyr::unite 如何防止空白列被删除?

[英]R tidyr::unite How to prevent blank columns from being deleted?

I am trying to create a .txt file to submit a National Death Index (NDI) query (hence the txt format).我正在尝试创建一个 .txt 文件来提交国家死亡指数 (NDI) 查询(因此是 txt 格式)。 Among other data, one needs to submit last and first name.在其他数据中,需要提交姓氏和名字。 The first name should be truncated to 20 characters and the first name should be truncated to 15 characters.名字应该被截断为 20 个字符,名字应该被截断为 15 个字符。

Please note I am first saving the query as a .csv and then saving the .csv as .txt from Excel (not R)请注意,我首先将查询保存为 .csv,然后将 .csv 保存为 Excel(不是 R)中的 .txt

I am doing something very inefficient but this is not the part giving me trouble.我正在做一些非常低效的事情,但这不是给我带来麻烦的部分。

### 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

Now I want to merging:现在我想合并:



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)

The problem : The blank "columns" are being removed.问题:正在删除空白“列”。 For example, if someone's last name has 5 characters ("smith") and their first name has 4 characters ("john") the output is "smithjohn" and not "smith john ".例如,如果某人的姓有 5 个字符(“smith”),而他们的名字有 4 个字符(“john”),则输出是“smithjohn”而不是“smith john”。 In other words, the blank spaces are being lost.换句话说,空格正在丢失。

Sorry for the long disorganized question.很抱歉这个长期杂乱无章的问题。 I am clearly a newbie at coding.我显然是编码新手。 Thanks much.非常感谢。

使用sprintf怎么样?

ndi <- data.frame(col = sprintf('%20s %15s',cases_alive$last, cases_alive$first))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM