如何在 R 的数据框中缩写长名称?
How to abbreviate long names in a dataframe for R?
我正在使用一个数据框,它的名称非常长,超过 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"
}
这种方式的唯一问题是现在我有缩写列(如果它有效),如果组织名称大于 25 个字符,我将如何确保 plotly 显示缩写列,如果它没有' t 然后它显示正常的组织名称。
无论如何,我已经谈得够多了,但那是我尝试过的一种方法,但它不太奏效,因为缩写列为列中的所有行放置了 "NA",不无论组织的名称有多长。我尝试做的另一种方法是使用替换功能,例如:
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
}
}
虽然这不是很有效,因为所有条目都是相同的组织名称
dataframe.name$abbr
是数据框中所有缩写 的向量,而不仅仅是一个名称。
这就是 dataframe.name$abbr
中的所有条目都被设置为 NA
的原因;数据框中的姓氏不超过 25 个字符,因此 dataframe.name$abbr
中的所有条目都分配了 NA
.
:完全取消 NA
,只在字符数超过 25 的地方截断。
像这样的东西应该会有效果:
dataframe.name$abbrv <- substring( dataframe.name$org_name, 0, 25 )
不过我会先尝试使用 abbreviate
:
dataframe.name$abbrv <- abbreviate( dataframe.name$org_name )
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"
我正在使用一个数据框,它的名称非常长,超过 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"
}
这种方式的唯一问题是现在我有缩写列(如果它有效),如果组织名称大于 25 个字符,我将如何确保 plotly 显示缩写列,如果它没有' t 然后它显示正常的组织名称。
无论如何,我已经谈得够多了,但那是我尝试过的一种方法,但它不太奏效,因为缩写列为列中的所有行放置了 "NA",不无论组织的名称有多长。我尝试做的另一种方法是使用替换功能,例如:
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
}
}
虽然这不是很有效,因为所有条目都是相同的组织名称
dataframe.name$abbr
是数据框中所有缩写 的向量,而不仅仅是一个名称。
这就是 dataframe.name$abbr
中的所有条目都被设置为 NA
的原因;数据框中的姓氏不超过 25 个字符,因此 dataframe.name$abbr
中的所有条目都分配了 NA
.
NA
,只在字符数超过 25 的地方截断。
像这样的东西应该会有效果:
dataframe.name$abbrv <- substring( dataframe.name$org_name, 0, 25 )
不过我会先尝试使用 abbreviate
:
dataframe.name$abbrv <- abbreviate( dataframe.name$org_name )
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"