Läs R4DS kapitel 14.
Lös kapitlen String basics, Introduction to stringr och Pattern matching with regular expressions på DataCamp.
Data från denna uppgift är hämtad från Riksdagens öppna data och innehåller grundläggande data om motioner från den nuvarande mandatperioden, läs in med
motioner <- read_csv("data/mot-2014-2017.csv",
col_names = c("hangar_id", "dok_id", "rm", "beteckning",
"typ", "subtyp", "doktyp", "dokumentnamn", "organ",
"mottagare", "nummer", "datum", "systemdatum",
"titel", "subtitel", "status"))
Det finns två källor till information om partitillhörigheten, genom variabeln dokumentnamn
och genom subtitel
. Använd t.ex. str_extract
tillsammans med regex för att ta fram parti från båda källor. En komplikation är att motionen kan vara ställd från flera personer med eventuellt olika partibeteckning, du väljer själv om/hur du hanterar detta. Plotta antalet motioner per månad färglagt efter parti (funktionen floor_date
i paketet lubridate
är ett smidigt sätt att trunkera datumvariabler).
Kombinera readLines
och str_split
till en enkel .csv
-filläsare som genererar en sträng-matris med filens innehåll.
textsträngen tabell
nedan innehåller en enkel tabell i HTML-kod,
tabell <- "<table>
<tr>
<th>Förnamn</th>
<th>Efternamn</th>
<th>Ålder</th>
</tr>
<tr>
<td>Kalle</td>
<td>Karlsson</td>
<td>25</td>
</tr>
<tr>
<td>Lisa</td>
<td>Larsson</td>
<td>17</td>
</tr>
</table>"
som i webbläsaren blir
Förnamn | Efternamn | Ålder |
---|---|---|
Kalle | Karlsson | 25 |
Lisa | Larsson | 17 |
Använd regex för att extrahera vektorn
## [1] "Förnamn" "Efternamn" "Ålder" "Kalle" "Karlsson" "25"
## [7] "Lisa" "Larsson" "17"
ur tabell
.
Strindbergs Hemsöborna kan laddas ner från Projekt Gutenberg med
text <- readLines("http://www.gutenberg.org/cache/epub/30078/pg30078.txt") %>% .[93:5129]
Gör om texten till en data.frame
med variabeln ord
som innehåller textens alla ord i gemener med skiljetecken bortplockade. Lägg till variablerna nr = 1:n()
och kapitel = cumsum(ord == "kapitel")
. Vid textanalys brukar man ta bort s.k. stoppord som binder ihop texten men är ganska betydelsefattiga i sig själv. En lista på svenska sådana hittade jag på
stoppord <- read_table("https://raw.githubusercontent.com/stopwords-iso/stopwords-sv/master/stopwords-sv.txt",
col_names = "ord")
Ta bort stopporden från Hemsöborna med anti_join
. Att kvantifiera känslostämningar i texter är populärt, specialkurser finns på DataCamp för den som vill lära sig mer. För att göra så behövs ett sentimentlexikon som värderar ord, ett svenskt sådant finns på Språkdatabanken och kan laddas ner med
sentiment <- read_csv("https://svn.spraakdata.gu.se/sb-arkiv/pub/lmf/sentimentlex/sentimentlex.csv")
Koppla ihop med Hemsöborna genom inner_join
. Känslostämning hos de återstående orden kan kanske kvantifieras som strength * confidence
i sentimentlexikonet, avsluta genom att visualisera hur denna förändras under romanens gång (som funktion av kapitel
eller nr
).