小编cou*_*unt的帖子

使用gsub添加前导0

我想将前导零添加到一个字母数字字符串中,总共十个字符.但是,角色之间可能存在空间.

TestID <- c("1b4 7A1")

gsub(" ","0",sprintf("%010s", TestID))
Run Code Online (Sandbox Code Playgroud)

此代码添加前导零,但也用零替换字符串中的空白空间.有没有办法只在字符串前添加零?

# [1] "0001b4 7A1"
Run Code Online (Sandbox Code Playgroud)

r

7
推荐指数
1
解决办法
1126
查看次数

传播多个列[tidyr]

我想用数据在多个列上传播数据tidyr.

  dat <- data.frame(ID = rep(1,10), 
  col1 = LETTERS[seq(1,10)], 
  col2 = c(letters[seq(1,8)],NA,NA),
  col3 = c(rep(NA,8),"5",NA),
  col4 = c(rep(NA,8),NA,"value"))
Run Code Online (Sandbox Code Playgroud)

预期结果是:

Out <- data.frame(t(c(1,letters[seq(1,8)],"5","value")),row.names=NULL)
colnames(Out) <- c("ID",LETTERS[seq(1,10)])
Run Code Online (Sandbox Code Playgroud)

我提出了:

a <- dat %>% gather(variable, value, -(ID:col1)) %>% 
     unite(temp, col1, variable) %>% 
     spread(temp, value)
a[,-which(is.na(a))]
Run Code Online (Sandbox Code Playgroud)

这是笨拙的,也改变了列名.有更好的解决方案吗?

r dplyr tidyr

2
推荐指数
1
解决办法
3498
查看次数

标签 统计

r ×2

dplyr ×1

tidyr ×1