r - R - 基于在 df 中搜索向量元素创建新列
问题描述
我想向 df 添加列,其中新添加的列是基于在 df 的现有列中搜索向量的值。
我的原始数据集包含网络数据,其中行代表每个客户访问的页面;访问的页面存储在 df$URL 中。我有一个单独的网页 URL 向量,该向量中的每个元素都需要添加为一列,其值指示原始 df (df$URL) 中客户的页面访问是否与要添加的列匹配 (=vector 元素)。
基本上:我想为向量的每个元素(其中列名=向量元素)创建一个列,其值(0/1)基于搜索 df 的 URL 列的行以在匹配项上添加 1,或者否则为 0。
urlnames 中的所有向量元素都出现在 df$URL 中(但不是针对每一行),但 df$URL 包含的 URL 比向量中的多(基本上,向量仅包含一些访问次数最多的 URL 页面)。
urlnames <- c("/home", "/login", "/contact")
df <- data.frame("URL" = c("/home", "/login", "/contact", "/chat", "/product-page"))
手动我会做类似的事情(使用 dplyr):
df %<>%
mutate(home = ifelse(URL == "/home", 1, 0))
基本上,变量名称和 ifelse 标准应该替换为向量元素。我不知道是否有更有效/更简洁的方法来做到这一点。
我真的很想学习如何自动执行这些操作,而不必对每个变量进行手动变异调用。
(顺便说一句,我也希望输入 url 斜杠在创建列名时可能产生的潜在问题,例如 /home 作为变量)
希望我已经足够清楚地解释我的问题,如果没有道歉 - 这是我的第一篇文章,我(显然)是 R 的新手。谢谢!
解决方案
尝试table
:
table(1:nrow(df),df$URL)
# /chat /contact /home /login /product-page
# 1 0 0 1 0 0
# 2 0 0 0 1 0
# 3 0 1 0 0 0
# 4 1 0 0 0 0
# 5 0 0 0 0 1
您可以在之后删除不需要的列,并data.frame
在需要时强制转换为 a。
有很多方法可以删除列。一种是使用与 withreplace
不同的值并重新应用上述值。就像是:urlnames
NA
table(1:nrow(df),droplevels(replace(df$URL,which(!df$URL %in% urlnames),NA)))
推荐阅读
- r - 如何重新格式化数据,使 ID 对应两行,一行包含样本源,第二行包含源的结果
- python - 旋转图像后计算属于矩形角的像素
- docker - 将 jenkins 机密文件传递给 docker image run
- discord.py - Discord.py 嵌入只显示一个词
- c - C - 变量的类型不完整“struct ...”
- spring - 无法在 Spring Boot 中使用 JUnit 5 模拟 RestTemplate
- html - 删除 CSS 列上的额外底部填充
- c# - 将样式设置为 wpf 自定义控件会覆盖所有内容
- javascript - Ionic Vue Modal 显示内容两次
- open-telemetry - 如何定义兼容日志