我正在处理一个名称长度超过25个字符的数据帧。我试图用所有这些组织名称制作一个条形图(带有阴谋),但名称因为它们超长而被切断。我已经尝试过如下边缘:
plot_ly(x = number, y = org_name, type = 'bar') %>%
layout(margin = list(l = 150))
它有效,但条形图看起来并不好看,所以我尝试做的另一种选择是缩写任何超过25个字符的组织名称。但是,我很难这样做。我尝试缩写它的一种方法是创建一个名为abbrv的新列,使用substring获取组织名称的前25个字符,然后执行" ...",然后将其放入列中。虽然组织的名称不超过25,但我会在abbrv列中添加NA,如下所示:
for(i in dataframe.name$org_name){
if(nchar(i) > 25){
dataframe.name$abbrv <- paste0(substring(i, 0, 25), "...")
}
else{
dataframe.name$abbrv <- "NA"
}
现在我唯一拥有abbrv列(如果有效),如果组织名称大于25个字符,如果它没有&#39;那么我将如何确保在图表中显示abbrv列?然后它显示正常的组织名称。
无论如何,我对此进行了充分的讨论,但这是我尝试过的一种方法,但是由于abbrv专栏提出了&#34; NA&#34;对于列中的所有行,无论组织的名称有多长。我试图做的另一种方法是使用替换函数,例如:
for(i in dataframe.name$org_name){
if(nchar(i) > 25){
dataframe.name[i].replace(
to_replace=i,
value= abbreviate(i)
)
}
但我也遇到了错误。在这一点上,我甚至不知道该怎么做以及如何在我的数据框中缩写长名称?我真的迷失了,不知道该做什么以及如何缩短长名。如果有人能帮助我,那就太棒了!感谢。
******* *******编辑
现在我正在使用此代码:
for(i in 1:nrow(dfname)){
if(nchar(dfname$orgname[i]) > 25){
dfname$abbrv.column <- substring(dfname$orgname[i], 0, 25)
}
else{
dfname$abbrv.column <- dfname$orgname
}
}
这并不是很有效,因为所有条目都是相同的组织名称
答案 0 :(得分:3)
dataframe.name$abbr
是数据框中所有缩写的向量,而不仅仅是一个名称。
这是dataframe.name$abbr
中所有条目都设置为NA
的原因;数据框中的姓氏不超过25个字符,因此dataframe.name$abbr
中的所有条目都被指定为NA
。
@brettljausn has a decent suggestion:完全取消NA
,只截断字符数超过25的位置。
这样的事情应该是一种享受:
dataframe.name$abbrv <- substring( dataframe.name$org_name, 0, 25 )
我会首先尝试使用abbreviate
:
dataframe.name$abbrv <- abbreviate( dataframe.name$org_name )
答案 1 :(得分:0)
Base R 缩写。限制为 8 个字符,包括“.”
> abbreviate(names(iris), minlength = 8)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"Spl.Lngt" "Spl.Wdth" "Ptl.Lngt" "Ptl.Wdth" "Species"