繁体   English   中英

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

[英]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.

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