我有这样的DataFrame(简化示例)
id v0 v1 v2 v3 v4
1 10 5 10 22 50
2 22 23 55 60 50
3 8 2 40 80 110
4 15 15 25 100 101
Run Code Online (Sandbox Code Playgroud)
并且如果v0值在v1到v4的值中,则想要创建一个1或0的附加列,如果不是,则创建0.因此,在此示例中,对于id 1,则该值应为1(因为v2 = 10),并且对于id 2值应该为0,因为22不在v1到v4中.
实际上,表格更大(大约100,000行,变量从v1到v99).
我有两个嵌套列表:
\na = [[1,2,3],[2,4,2]]\nb = [[5,5,5],[1,1,1]]\n
Run Code Online (Sandbox Code Playgroud)\n我想将每组元素相乘并求和得到
\nc = [[30],[8]]\n
Run Code Online (Sandbox Code Playgroud)\n哪个结果来自= [[1*5+2*5+3*5],[2*1,4*1,2*1]]
我\xc2\xb4ve尝试这样做:
\na = [[1,2,3],[2,4,2]]\nb = [[5,5,5],[1,1,1]]\n
Run Code Online (Sandbox Code Playgroud)\n但我得到“无法将序列乘以“列表”类型的非 int”
\n是否有一种简单的列表理解方法可以避免 for 循环?
\n我有这样的DataFrame
id val1 val2
0 A B
1 B B
2 A A
3 A A
Run Code Online (Sandbox Code Playgroud)
我想交换以下值:
id val1 val2
0 B A
1 A A
2 B B
3 B B
Run Code Online (Sandbox Code Playgroud)
我需要考虑df可能有其他列我想保持不变.
我有一个具有以下结构的 df:
id a1_l1 a2_l1 a3_l1 a1_l2 a2_l2 a3_l2
1 1 5 3 1 2 3
2 1 5 3 1 2 3
3 2 5 3 5 5 3
4 5 5 3 5 5 3
5 5 5 2
6 5 5 2
7 5 5 2
8 2 5 2
9 3 5 1
10 3 5 1
Run Code Online (Sandbox Code Playgroud)
我想总结在一个表格中,这样我就可以得到:
l1 l2
a1 0.4 0.5
a2 1 0.5
a3 0 0
Run Code Online (Sandbox Code Playgroud)
我正在做的是计算 5 出现的次数除以有效响应的数量,例如:
a1, l1 等于 0.4,因为我有 …
我有这样的DataFrame:
1 2 1 3 1 4
2 4 5 1 1 4
1 3 5 3 1 4
1 3 1 3 1 4
Run Code Online (Sandbox Code Playgroud)
这样的另一个
1 1 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我想乘以他们得到
1 2 0 0 0 0
2 4 0 0 0 0
1 3 0 0 0 0
1 3 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
因此,正在发生的情况是,第二个df中的每个列都将每个值乘以一个,而每个列中的值为零则将第一个数据帧中的所有列都乘以0。
考虑到BigQuery导出的文件大小为99个csv文件,我将数据集从Google BigQuery导出到Google Cloud Storage。
但是,现在我想连接到我的GCP存储桶并使用Spark执行一些分析,但是我需要将所有99个文件加入一个大的csv文件中以运行分析。
如何做到这一点?
我有一个数据框:
data <- data.frame(
name = c("John", "Paul", "George", "Ringo", "Stuart", "Pete"),
instrument1 = c("guitar", "bass", "guitar", "drums", "bass","drums"),
instrument2 = c("guitar", "bass", "guitar", "drums", "bass","drums"),stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
我创建了一个这样的函数:
sel <- function(df, variable) {
var <- enquo(variable)
df2 <- select(df, starts_with(!!var))
return(df2)
}
Run Code Online (Sandbox Code Playgroud)
如何使用以下命令运行此功能:
sel(data, instrument)
Run Code Online (Sandbox Code Playgroud)
无需引用参数“instrument”。我需要它不被引用,因为这是一个更大的函数的一部分。如果我像上面那样运行它,我会得到:
Error in is_string(match) : object 'instrument' not found
Run Code Online (Sandbox Code Playgroud) 我有两个这样的数据集(简化示例)
id A B C
1 1 2 3
2 4 1 3
3 2 5 3
Run Code Online (Sandbox Code Playgroud)
和
id A B C
1 2 2 2
2 3 3 3
3 4 4 4
Run Code Online (Sandbox Code Playgroud)
我怎样才能加入才能得到
id A1 A2 B1 B2 C1 C2
1 1 2 2 2 3 2
2 4 3 1 3 3 3
3 2 4 5 4 3 4
Run Code Online (Sandbox Code Playgroud)
所以我想保留 Id 并将 dfs 与 df1 的第一列组合为第一列,将第二个 df 中的第一列组合为 2 等等......
我有一个具有以下结构的数据框:
id v1 v2 v3 v4 v5
1 . 1 . 2 3
2 1 2 3 . .
3 3 2 . 1 .
Run Code Online (Sandbox Code Playgroud)
我想像这样重新编码
id v1 v2 v3 v4 v5
1 0 3 0 2 1
2 3 2 1 0 0
3 1 2 0 3 0
Run Code Online (Sandbox Code Playgroud)
所以我想重新编码值 (1=3) (missing = 0) (3=1)
在 SPSS 中,这是相当直观的:
recode v1 to v5 (sysmis=0)(3=1)(1=3)(else=copy).
Run Code Online (Sandbox Code Playgroud)
我正在 R 中寻找类似的方法。对基本方法或 tidyverse 方法没有偏好。
我有一个包含很多列的 DF,鉴于每行的最大值为 1 而其他所有值均为 0,如何用(1 或 0)替换这些值。所以如果我有
v1 v2 v3
1 3 2
0 4 .5
.1 .1 .7
Run Code Online (Sandbox Code Playgroud)
并得到:
v1 v2 v3
0 1 0
0 1 0
0 0 1
Run Code Online (Sandbox Code Playgroud)
根据之前的计算,数字是浮点数,每行不可能有重复的数字。
谢谢,
有这样的数据框
car model
toyota corolla
toyota rav4
honda civic
honda civic
honda accord
Run Code Online (Sandbox Code Playgroud)
我如何编写一个删除次数少于 n 次的品牌,比如我想删除出现次数少于 3 次的品牌,结果数据帧将是
car model
honda civic
honda civic
honda accord
Run Code Online (Sandbox Code Playgroud)
所以我保留相同的数据框和所有变量,只删除行。