2017-11-30 5 views
1

정말 긴 이름이 25 자 이상인 데이터 프레임으로 작업하고 있습니다. 나는이 모든 조직 이름을 가진 막대 그래프를 (플롯과 함께) 만들려고 노력하고 있지만, 이름이 너무 길기 때문에 이름이 잘릴 수 있습니다.R에 대한 데이터 프레임의 긴 이름을 축약하는 방법은 무엇입니까?

plot_ly(x = number, y = org_name, type = 'bar') %>% 
layout(margin = list(l = 150)) 

그것은 작동하지만 막대 그래프가 좋은 보이지 않는 내가 할 노력하고있어 대체가 이상 25 개 문자는 어떤 조직의 이름을 축약입니다 : 이미 다음과 같이 여백을 시도했습니다 . 그러나, 나는 그렇게 힘든 시간을 보내고있다. 필자가 약어로 사용하려고 한 방법은 abbrv라는 새로운 열을 만들고, 하위 문자열을 사용하여 조직 이름의 처음 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자를 넘으면 abbrv 열을 플롯으로 표시하고 그렇지 않은 경우 일반 조직 이름을 표시하는 방법은 무엇입니까?

어쨌든, 나는 그것에 대해 충분히 이야기했지만 그것이 한 가지 방법 이었지만, abbrv 열은 아무리 길어도 열의 모든 행에 대해 "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 
} 
} 

을 비록 모든 때문에 항목은

+1

이름이 abbrv 열에 25 자 미만인 경우 전체 이름을 입력하면 어떻게됩니까? 그리고 나서 음모에 abbrv 열을 사용하십시오. 이'dataframe.name $ abbrv <- "NA"를이'dataframe.name $ abbrv <- dataframe '으로 변경하십시오.name $ org_name' – brettljausn

+0

Hmmm, 나쁘지 않습니다.하지만 아쉽게도 abbrv 열은 하나의 조직 이름으로 채워집니다.이 경우에는 데이터 프레임의 마지막 행의 조직 이름입니다. 나는 왜이 일을하는지 모르겠다. 칼럼이 "NA"로 채워진 것을 제외하고는 이전에 똑같은 일을하고 있었다. – Fairly

답변

1

dataframe.name$abbr 모든 약어 dataframe에서, 단지 하나의 이름의 벡터입니다 같은 조직 이름입니다.

dataframe.name$abbr의 모든 항목이 NA으로 설정되는 이유입니다. 데이터 프레임의 성은 25 자 이하이므로 dataframe.name$abbr의 모든 항목에는 NA이 할당됩니다.

@brettljausn has a decent suggestion :

dataframe.name$abbrv <- substring(dataframe.name$org_name, 0, 25) 

내가 먼저 abbreviate를 사용하려고합니다 : 그냥 완전히 멀리 NA와 함께 사용 할 만 글자 수는 치료를 작동합니다 같은 25

뭔가를 초과하는 경우 잘라 내기 그래도 :

dataframe.name$abbrv <- abbreviate(dataframe.name$org_name) 
+0

for 루프가 데이터 프레임의 각 항목을 계속 통과하도록 제안 하시겠습니까? – Fairly

+0

이제 오류 메시지가 표시됩니다. 경고 메시지 : 약자 (i) : 비 ASCII 문자와 약어 사용 중요 사항? – Fairly

+0

for 루프는 전혀 필요하지 않습니다. – Zaid