2013-03-16 2 views
-1

R에서 몇 가지 기본 텍스트 분석을하고 R에로드하는 .txt 파일에서 줄 바꿈 문자 수를 계산하려고합니다. 아래 예제를 사용하여 각 스피커는 라인 번호에 라인이 추가되어 Smith = 4, Mr. Gordon = 6, Mr. Catalano = 3과 같이 새로운 라인이 추가됩니다.텍스트 줄 수 R

[71] "\"511 \ "\ t \"
MR 스미스 : 미스터 스피커, 나는 우리가 이것에 동의하는 정신을 좋아한다. FUFA의 관리는 여기에 있습니다. FUFA는 도관으로 사용될 수 있지만, 어떤 목적을위한 것인가. 베티 카야 (Beti Kamya)는 자랐고, 어떤 자상 한 분이 셨습니다 감사합니다 매우 :. 그냥이를 달성 한 선수들에게 감사의 표시를주는 \ "\ t \"
MR 고든은 "
[72]"\ "\ 513"- okufuwa 로즈 Namayanja가 말했다이었다 , Mr Speaker. FUFA는 조직이고 선수는 우리를 위해 컵을 가지고있는 사람들입니다. 축구뿐만 아니라 모든 활동에서 동기를 부여하기 위해서는 잘 해낸 사람들을 보상해야합니다. 이 경우, 우리는 FUFA에 대해 그들의 문제를 들었다. 그들은 수도 요금을 지불하지 않았으며 수도 요금을 지불하기 위해이 돈을 가질 수 있습니다. 우리가이 돈이 선수들과 코치들에게 돌아 가기로되어있다면 거기에 갈 때 그 금액을 알게 될 것이고 그들은 우리 사이에 앉아서 우리가 무엇을 주 었는지에 따라 분배 할 것입니다. (박수) 내가 당신을 감사 \ ""
[73] "\"\ 515 "\ t \"
MR 카탈 라노 :. 씨 스피커, 나는 나의 친애하는 동료에게 정보를 제공하고자합니다. 정신은 매우 좋지만 FUFA의 관리가 이런 일이 일어 났음을 명심해야합니다. 선수들에게 돈. 그것은 FUFA가 매우 신뢰할 수 있음을 나타냅니다. 이것은 우리가 말하는 오래된 FUFA가 아닙니다. \ ""

연결이 필요하기 때문에 countLine() 함수가 작동하지 않습니다. 이들은 .txt를 R로 가져 왔습니다. 줄 수가 중요하다는 것을 알고 있습니다. 텍스트가 열리는 형식을 정하는 데 도움이되지만, 가능하다면 일반적인 도움이 될 것입니다. 감사.

+0

줄을 구하기 위해선 아무것도 얻을 수 없습니다 (countLines, length (count.fields()도 작동하지 않습니다). 나는 문자 수를 얻기 위해 nchar()을 사용했고 단어 수를 얻을 수있다 : sapply (gregexpr ("\\ W +", statement), function (x) sum (x> 0)) + 1 각 문장은 Mr. Smith/Gordon/Catalano가 전달한 것. 최악의 경우 양식화 된 변환을 사용할 수 있습니다. 한 줄에 10-12 단어로 가정하면 단어를 세 어서 나눌 수 있지만 조금 더 형식적인 것이 있는지 궁금해하고 있습니다. –

+1

이전 질문 및 답변에 무엇이 잘못 되었습니까? http://stackoverflow.com/questions/15326689/how-to-count-text-lines-in-r – Arun

답변

2

이이 의견에서 제기하지만, 정말 자신의 대답 인 드러낸다된다

당신은 "선"이 무엇인지 정의하지 않고 "선을 계산"수 없습니다. 선은 매우 모호한 개념이며 사용되는 프로그램에 따라 다를 수 있습니다.

물론 데이터에 의 줄이 표시되어 있지 않은 한 과 같은이 나옵니다.그러나 그 후에도 을 계산하지 않으면 줄 바꿈을 계산하게됩니다. 그런 다음 하드 코딩 된 줄 바꿈이 분석하고자하는 바에 부합하는지 스스로에게 질문해야합니다.

-

를 데이터가 줄 바꿈을 포함하지 않는,하지만 여전히 우리는 "어떻게 당신이 선을 정의합니까"라는 질문에 돌아 왔구나, 라인의 수를 계산하려면? 가장 기본적인 방법은 문자 길이를 사용하는 @flodel이 제시하는 방법입니다. 예를 들어, 76 자 길이로 선을 정의하고

ceiling(nchar(X)/76)) 

이 과정의 수행이 단어를 줄일 수 있다고 가정 할 수 있습니다. (단어 전체가 남아 있어야한다면, 더 교묘 해져야합니다.)

3

나는 당신의 예를 재현했다 생각하지 않았다, 그래서 당신이 게시 된 것을 포함 할 수 그것을 편집하지만, 이름이 일치 할 경우 나도 몰라 :

txtvec <- structure(list(`'511' ` = "MR Smith: Mr Speaker, I like the spirit in which we are agreeing on this. The administration of FUFA is present here. FUFA could be used as a conduit, but the intention of what hon. Beti Kamya brought up and what hon. Rose Namayanja has said was okufuwa - just giving a token of appreciation to the players who achieved this.\"", 
    `'513' ` = "MR Gordon: Thank you very much, Mr Speaker. FUFA is an organisation and the players are the ones who got the cup for us. To promote motivation in all activities, not only football, you should remunerate people who have done well. In this case, we have heard about FUFA with their problems. They have not paid water bills and they can take this money to pay the water bills. If we agree that this money is supposed to go to the players and the coaches, then when it goes there they would know the amount and they will sit among themselves and distribute according to what we will have given. (Applause) I thank you.\"", 
    `'515' ` = "MR Catalano: Mr Speaker, I want to give information to my dear colleagues. The spirit is very good but you must be mindful that the administration of FUFA is what has made this happen. The money to the players. That indicates to you that FUFA is very trustworthy. This is not the old FUFA we are talking about.\""), .Names = c("'511'\t", 
"'513'\t", "'515'\t")) 

을 그래서 그것은 단지 문제 나 정규 표현식을 실행하고 그 결과를 도표화하면 다음과 같습니다.

> table(sapply(txtvec, function(x) sub("(^MR.+)\\:.+", "\\1", x))) 
#MR Catalano MR Gordon MR Smith 
      1   1   1 

이름이 원래 구조에없는 것으로 나타났습니다. 이러한 쉽게 할 수 있을까 (이 코드를 사용할 수 있습니다 줄에 80 자와 포장 장치에 차지하는

txtvec <- c("\"511\"\t\"\nMR Smith: Mr Speaker, I like the spirit in which we are agreeing on this. The administration of FUFA is present here. FUFA could be used as a conduit, but the intention of what hon. Beti Kamya brought up and what hon. Rose Namayanja has said was okufuwa - just giving a token of appreciation to the players who achieved this.\"", 
"\"513\"\t\"\nMR Gordon: Thank you very much, Mr Speaker. FUFA is an organisation and the players are the ones who got the cup for us. To promote motivation in all activities, not only football, you should remunerate people who have done well. In this case, we have heard about FUFA with their problems. They have not paid water bills and they can take this money to pay the water bills. If we agree that this money is supposed to go to the players and the coaches, then when it goes there they would know the amount and they will sit among themselves and distribute according to what we will have given. (Applause) I thank you.\"", 
"\"515\"\t\"\nMR Catalano: Mr Speaker, I want to give information to my dear colleagues. The spirit is very good but you must be mindful that the administration of FUFA is what has made this happen. The money to the players. That indicates to you that FUFA is very trustworthy. This is not the old FUFA we are talking about.\"" 
) 

table(sapply(txtvec, function(x) sub(".+\\n(MR.+)\\:.+", "\\1", x))) 

#MR Catalano MR Gordon MR Smith 
#   1   1   1 

는 "선"의 수를 계산하려면 다음이 익명의 벡터 다른 버전과 약간 수정 된 정규식) 함수로 변환 :

sapply(txtvec, function(tt) 1+nchar(tt) %/% 80) 
#[1] 5 8 4 
+0

+1하지만 그 중 "\"513 \ "\ t \"'이 (가) 실제로 자신의 일부라는 것을 볼 수 있습니다 문자열, 그래서 그들은 정규 표현식의 일부가되어야합니다. – flodel

+0

죄송합니다 - 형식을 유지하기가 어렵습니다. 당신이 만드는 코드가 도움이 되긴하지만 위의 텍스트에 나오는 줄 수를 계산하여 End Smith가 Mr. Smith = 4, Mr. Gordon = 6, Mr. Catalano = 3 ; 그들이 각자 무언가를 말하면 각 사람에 의해 배달 된 선의 수. –

+0

@ user2154571, 나는 당신이 조금 혼란 스럽다고 생각합니다. 따옴표에 줄 바꿈이 없습니다. "줄 수"는 단어 줄 바꿈의 결과이며 응용 프로그램 창의 크기가 얼마나 큰지에 대한 함수입니다. – flodel

관련 문제