我有两个不同结构的列表:
listA <- list(c("a","b","c"), c("d","e"))
listB <- list(0.05, 0.5)
listA
[[1]]
[1] "a" "b" "c"
[[2]]
[1] "d" "e"
listB
[[1]]
[1] 0.05
[[2]]
[1] 0.5
Run Code Online (Sandbox Code Playgroud)
我知道如何使用循环将两个列表组合在一个看起来像下面的数据框中,但我确信有一种更有效的方法.
data.frame(A = c("a","b","c","d","e"), B = c(rep(0.05,3), rep(0.5,2)))
A B
1 a 0.05
2 b 0.05
3 c 0.05
4 d 0.50
5 e 0.50
Run Code Online (Sandbox Code Playgroud) 我有两个任意人A和B之间的对话记录.
c1 <- "Person A: blabla...something Person B: blabla something else Person A: OK blabla"
c2 <- "Person A: again blabla Person B: blabla something else Person A: thanks blabla"
Run Code Online (Sandbox Code Playgroud)
数据框如下所示:
df <- data.frame(id = rbind(123, 345), conversation = rbind(c1, c2))
df
id conversation
c1 123 Person A: blabla...something Person B: blabla something else Person A: OK blabla
c2 345 Person A: again blabla Person B: blabla something else Person A: thanks blabla
Run Code Online (Sandbox Code Playgroud)
现在我想只提取人A的一部分并将其放在数据框中.结果应该是:
id person_A
1 123 blabla...something OK …Run Code Online (Sandbox Code Playgroud) 我正在研究一个基本上看起来像这个的数据帧.
X1 X2 X3 X4
x1 a b NA c
x2 d NA NA e
x3 f g h i
x4 j NA k l
Run Code Online (Sandbox Code Playgroud)
我想要做的是将每个单元格的行向左移动.最后,所有具有值的单元格应该向左聚集,而所有具有NA的单元格应该向右聚集.
最后,数据框应如下所示:
X1 X2 X3 X4
x1 a b c NA
x2 d e NA NA
x3 f g h i
x4 j k l NA
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道该怎么做.
非常感谢您的帮助.(也许你也可以解释你的代码在做什么?)
拉米
我的数据框看起来像这样:
x1 <- c("a", "c", "f", "j")
x2 <- c("b", "c", "g", "k")
x3 <- c("b", "d", "h", NA)
x4 <- c("a", "e", "i", NA)
df <- data.frame(x1, x2, x3, x4, stringsAsFactors=F)
df
x1 x2 x3 x4
1 a b b a
2 c c d e
3 f g h i
4 j k <NA> <NA>
Run Code Online (Sandbox Code Playgroud)
现在我有一个任意的向量:
vec <- c("a", "i", "s", "t", "z")
Run Code Online (Sandbox Code Playgroud)
我想将矢量值与数据帧中的每一行进行比较,并创建一个额外的列,指示是否至少找到一个矢量值.
生成的数据框应如下所示:
x1 x2 x3 x4 valueFound
1 a b b a 1
2 c …Run Code Online (Sandbox Code Playgroud)