让我们假设有两个巨大的数据帧(不同长度)的两列,例如:
df1 df2
A 1 C X
A 1 D X
B 4 C X
A 1 F X
B 4 A X
B 4 B X
C 7 B X
每次第1列中都存在一个匹配项时,应将X替换为df1列2中的数据。如果df2的第一列包含元素,但仍不在df1的第一列(F,D)中,则X应替换为0。
因此,有一个巨大的数据帧,循环中的循环将无用。
解决方案应如下所示:
df1 df2
A 1 C 7
A 1 D 0
B 4 C 7
A 1 F 0
B 4 A 1
B 4 B 4
C 7 B 4
提前谢谢
答案 0 :(得分:0)
由于'df1'中存在重复的行,因此我们可以获得transform: rotate(90deg);
行
browser.setDownloadListener(new DownloadListener()
{
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimeType,
long contentLength) {
DownloadManager.Request request = new DownloadManager.Request(
Uri.parse(url));
request.setMimeType(mimeType);
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie", cookies);
request.addRequestHeader("User-Agent", userAgent);
request.setDescription("Downloading file...");
request.setTitle(URLUtil.guessFileName(url, contentDisposition,
mimeType));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(
Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(
url, contentDisposition, mimeType));
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
Toast.makeText(getApplicationContext(), "Downloading File",
Toast.LENGTH_LONG).show();
}});
然后,使用unique
获取idnex
df3 <- unique(df1)
并根据索引分配
match
如果没有匹配项,则为i1 <- match(df2$Col1, df3$Col1)
,可以将其更改为0
df2$Col2 <- df3$Col2[i1]
或者通过NA
,通过df2$Col2[is.na(df2$Col2)] <- 0
df2
# Col1 Col2
#1 C 7
#2 D 0
#3 C 7
#4 F 0
#5 A 1
#6 B 4
#7 B 4
在“ Col1”上进行分配,并从“ df3”中将Col2分配给“ Col2”(在从第二个数据中删除了Col2之后)。 / p>
data.table
join