Duplicating a row based on number of elements filled for that corresponding row

sql select duplicate rows based on one column
excel extract all rows that contain a value
extract all rows from a range that meet criteria in one column
excel extract rows based on cell value
sql query to find duplicate rows in a table
excel remove duplicate rows based on one column
return all rows that match criteria excel
excel extract list based on criteria

I have a data frame that is resembled by the example below:

Code:

   DF <- data.frame(lapply(data.frame(Company = c("Company1", "Company2", "Company3", "Company4"),
                                  Col1 = c("test 1", "", "", ""),
                                   Col2 = c("", "test 2", "", "test 3"),
                                   Col3 = c("", "", "", "test 4")), as.character), stringsAsFactors=FALSE)

and the data frame looks like this:

    Company      Col1   Col2   Col3 
1   Company1    test 1                  
2   Company2           test 2           
3   Company3           
4   Company4           test 3  test 4  

I would like to achieve the following output data frame:

    Company      Col   
1   Company1    test 1                  
2   Company2    test 2           
3   Company4    test 3
4   Company4    test 4

The output is basically assigning a single available element from columns Col1, Col2 and Col3 for a particular reference column (Company) in the row. If the row has two or more values (like in row number 3), then it should create duplicate rows and assign a single element to it in no particular order.

It is fine to also have a blank against Company 3 in the output (Col) as long as every Company is accounted.

Any help would be greatly appreciated since I have had no luck with keywords for coming up with code to do the above. The closest code has been stackoverflow question but it doesn't address the task of duplicating a reference column (which is "Company" in my case).

Here is a tidyverse approach. Reshape your data from wide to long format and filter for cases were column 'Col' is not "".

library(tidyverse)
DF %>% 
  gather('value', 'Col', -Company) %>% 
  filter(Col != "") %>% 
  select(-value)
#   Company    Col
#1 Company1 test 1
#2 Company2 test 2
#3 Company4 test 3
#4 Company4 test 4

Extract all rows from a range that meet criteria in one column, [Array formula]; Extract all rows from a range based on multiple conditions [Array formula] automatically. Now copy cell A20 and paste to cell range A20:E22. Step 3 - Return corresponding row number The two cells filled with yellow are my input cells and are the criteria for my table below. You can see  In this article we will discuss ways to find and select duplicate rows in a Dataframe based on all or given column names only. In Python’s Pandas library, Dataframe class provides a member function to find duplicate rows based on all columns or some specific columns i.e. It returns a Boolean Series with True value for each duplicated row.

You can try tidyr:unite to merge all columns starting with "col" and then split into multiple rows using unnest.

library(tidyverse)

DF %>% unite("col", starts_with("col"), sep=",") %>%
  mutate(col = strsplit(as.character(col), ",")) %>%
  unnest(col) %>% filter(col != "")

#    Company    col
# 1 Company1 test 1
# 2 Company2 test 2
# 3 Company4 test 3
# 4 Company4 test 4

Finding Duplicates with SQL, How would I select all of the information in the duplicate rows, kinda the following format element name Table name m A m B thanks for ur help fall back on English (this way, the Wiki starts out filled in for the user of any language). If you have a key based on multiple columns, the correct statement is:  To duplicate each rows multiple times in a range, you can apply the following VBA code, please do as below: 1. Hold down the ALT + F11 keys, then it opens the Microsoft Visual Basic for Applications window. 2. Click Insert > Module, and paste the following code in the Module Window. VBA code: Duplicate each row multiple times:

A base R, option would be to unlist the dataset without the 1st column, create a logical index based on blank elements to filter the blank, replicate the first column (to make the lengths same), filter out the blank elements and create a data.frame

v1 <- unlist(DF[-1], use.names = FALSE)
i1 <- nzchar(v1)
data.frame(Company = rep(DF$Company, 3)[i1], col = v1[i1])
#   Company    col
#1 Company1 test 1
#2 Company2 test 2
#3 Company4 test 3
#4 Company4 test 4

Repeat copies of array - MATLAB repmat, This MATLAB function returns an array containing n copies of A in the row and column dimensions. Create a 3-by-2 matrix whose elements contain the value 10. A = repmat(10,3,2) n — Number of times to repeat input array in row and column dimensions You clicked a link that corresponds to this MATLAB command:. Extract all rows from a range that meet criteria in one column [Excel defined Table] The image above shows a dataset converted to an Excel defined Table, a number filter has been applied to the third column in the table. Here are the instructions to create an Excel Table and filter values in column 3. Select a cell in the dataset. Press CTRL + T

Repeat copies of array elements - MATLAB repelem, Each element of n specifies the number of times to repeat the corresponding element of v . Create a matrix and copy its columns into a new array, repeating the first column twice and second column If v is a row vector or scalar, u is a row vector. Based on your location, we recommend that you select: United States. Relatively new to PBID, and unfamiliar with backend DAX queries. I'm probably overlooking something, as it seems this should be simple. I have a table structured as below: Row Owner Oppty UniqueID etc. All I want to do is display all rows with duplicate UniqueIDs, e.g. rows 1 and 4, and filter out everything else.

Filter for unique values or remove duplicate values, Filter for unique values, remove duplicate values, and conditionally format unique or duplicate values in Excel. Insert or delete rows, and columns Supposing, you have a range of data, now, you want to return the column header in that row where the first non-zero value occurs as following screenshot shown, this article, I will introduce a useful formula for you to deal with this task in Excel. Lookup the first non-zero value and return corresponding column header with formula

LOOKUP function, Tips: Consider one of the newer lookup functions, depending on which version of Office Use VLOOKUP to search one row or column, or to search multiple rows and Copy the data in following table, and paste it into a new Excel worksheet. Remove duplicates but keep rest of row values with VBA. In Excel, there is a VBA code that also can remove duplicates but keep rest of row values. 1. Press Alt + F11 keys to display Microsoft Visual Basic for Applications window. 2. Click Insert > Module, and paste below code to the Module. VBA: Remove duplicates but keep rest of row values