R中有z.fill函数吗
is there a z.fill function in R
我有一个数据框
df=data.frame(f=c('a','ab','abc'),v=1:3)
并创建一个新列:
df$c=paste(df$v,df$f,sep='')
结果是
> df
f v c
1 a 1 1a
2 ab 2 2ab
3 abc 3 3abc
我希望 c 列采用以下格式:
> df
f v c
1 a 1 1 a
2 ab 2 2 ab
3 abc 3 3abc
这样连接值的总长度是一个固定数字(在本例中为 4 个字符),并且将选择一个字符来填充它,例如 | (在本例中为 \w)。
R中有这样的函数吗?我认为它类似于 python 中的 z.fill 函数,但我不是 python 程序员,并且更愿意留在 R 中而不是切换语言进行处理。最终,我创建了一个 10 列的超变量,并认为这有助于下游处理
我猜它会在粘贴功能中,但不确定如何'fill a factor'使其具有固定宽度
您可以使用formatC
功能如下
df$c <- paste(df$v, formatC(as.character(df$f), width = 3, flag = " "), sep = "")
df
f v c
1 a 1 1 a
2 ab 2 2 ab
3 abc 3 3abc
数据
df <- data.frame(f = c('a','ab','abc'), v=1:3)
您可以使用 format()
函数来漂亮地打印列的值。例如:
> format(df$f, width = 3, justify = "right")
[1] " a" " ab" "abc"
所以你的代码应该是:
df <- within(df, {
c <- paste0(v, format(f, width = 3, justify = "right"))
})
df
结果:
> df
f v c
1 a 1 1 a
2 ab 2 2 ab
3 abc 3 3abc
我有一个数据框
df=data.frame(f=c('a','ab','abc'),v=1:3)
并创建一个新列:
df$c=paste(df$v,df$f,sep='')
结果是
> df
f v c
1 a 1 1a
2 ab 2 2ab
3 abc 3 3abc
我希望 c 列采用以下格式:
> df
f v c
1 a 1 1 a
2 ab 2 2 ab
3 abc 3 3abc
这样连接值的总长度是一个固定数字(在本例中为 4 个字符),并且将选择一个字符来填充它,例如 | (在本例中为 \w)。
R中有这样的函数吗?我认为它类似于 python 中的 z.fill 函数,但我不是 python 程序员,并且更愿意留在 R 中而不是切换语言进行处理。最终,我创建了一个 10 列的超变量,并认为这有助于下游处理
我猜它会在粘贴功能中,但不确定如何'fill a factor'使其具有固定宽度
您可以使用formatC
功能如下
df$c <- paste(df$v, formatC(as.character(df$f), width = 3, flag = " "), sep = "")
df
f v c
1 a 1 1 a
2 ab 2 2 ab
3 abc 3 3abc
数据
df <- data.frame(f = c('a','ab','abc'), v=1:3)
您可以使用 format()
函数来漂亮地打印列的值。例如:
> format(df$f, width = 3, justify = "right")
[1] " a" " ab" "abc"
所以你的代码应该是:
df <- within(df, {
c <- paste0(v, format(f, width = 3, justify = "right"))
})
df
结果:
> df
f v c
1 a 1 1 a
2 ab 2 2 ab
3 abc 3 3abc