私は自分の質問に対する具体的な答えを探しましたが、成功しませんでした。
まず第一に、私は、何かが、この好きに見える48個の変数からなるデータフレームを、持っています:
> df
Text Screen_Name ...
1 a text where @Sam and @Su and @Jim are addressed Peter
2 a text where @Eric is addressed Margret
3 a text where @Sarah and @Adam are addressed John
現在、( "@ \ S +")に等しいすべての文字列を抽出し、それらを新しい列に格納しています
df$addressees <- str_extract_all(df$text, "@\\S+")
これは、私を取得します。
... Screen_Name Addressees ...
1 Peter c("@Sam", "@Su", "@Jim")
2 Margret @Eric
3 John c("@Sarah", "@Adam")
次に、列「Screen_Name」のそれぞれの値を繰り返すことによって、各「宛先」の新しい行が作成される2つの列の新しいデータフレームを作成します。
> df
Screen_Name Addressees
1 Peter Sam
2 Peter Su
3 Peter Jim
4 Margret Eric
5 John Sarah
6 John Adam
私は同様のアプローチの解決策を試しましたが、どれもうまくいかないようです。
手伝ってくれてありがとうございます!
OK、再現性の例で:
# create df
ego <- c("peter","margaret","john")
friends <- list(c("sam","su","jim"),c("eric"),c("sarah","adam"))
df <- data.frame(ego,friends= I(friends),stringsAsFactors = F)
# use repeat function to repeat rows
times <- sapply(df$friends,length)
df <- df[rep(seq_len(nrow(df)), times),]
# assign back unlisted friends
df$friends <- unlist(friends)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加